【发布时间】:2013-06-12 02:33:33
【问题描述】:
我正在开发一个以 API 为中心的 Web 应用程序,该应用程序具有自定义授权方法,该方法包括基于请求方法、URL、参数、公共 API 密钥并由私有 API 密钥编码的字符串。这在服务器端工作正常,但在客户端,私有 API 密钥(和授权方法)将易受攻击。在过去的一个小时左右,我一直在寻找保护此 API 密钥的好方法,我能找到的最佳方法是通过我的服务器进行代理,但我仍然不确定 100%。
首先,我应该担心吗?我想在我的 Web 应用程序中优先考虑安全性,但是任何涉及修改用户帐户的操作都需要一个临时的加密令牌来授权请求(除了 HMAC 哈希)。
我对代理的理解是,您将向您的服务器发出请求,然后服务器将使用私钥加密并返回信息..但是服务器如何验证请求来自具有有效 API 密钥的源?
谁能提供任何关于我应该做什么的见解?我觉得这可能是任何客户端代码的漏洞,包括 JavaScript、iOS 和 Android。
【问题讨论】:
-
私钥会以何种方式易受攻击?您必须将密钥提供给客户,否则将无法正常工作...
-
目前客户端只能是我的官方应用程序(网络和移动)。但是私钥和授权方法将在 JavaScript 源代码中可见,以便在站点上进行任何 AJAX 调用。
-
为什么要做自定义授权方式?您通常最好使用经过深思熟虑、经受住时间考验等的标准方法。您最关心的威胁模型是什么?使用您的 API 的第三方应用?
-
谢谢。我想我会做一些混淆方法来使其更难使用(如果 API 密钥被滥用,我总是可以破坏它)。好消息是没有安全风险,因为用户帐户有一个完整的秘密(服务器端)令牌系统,而 API 密钥的唯一风险就是以 JSON 格式(而不是 HTML)窃取我们的搜索结果刮)..
标签: javascript api security