我正在开发一个以API为中心的Web应用程序,其中包含一个自定义授权方法,该方法包括根据请求方法构建字符串,URL,参数,公共API密钥以及由私有API密钥编码。这在服务器端工作正常,但在客户端,私有API密钥(和授权方法)将是易受攻击的。我花了最后一个小时左右的时间来寻找保护这个API密钥的好方法,我能找到的最佳方法是通过我的服务器进行代理,但我仍然不确定100%。
首先,我应该担心吗?我想在我的Web应用程序中将安全性作为优先级,但是任何处理修改用户帐户的事务都需要一个临时的加密令牌来授权请求(除了HMAC哈希)。
我对代理的理解是,您将向您的服务器发出请求,然后使用私钥加密并返回信息。但是服务器如何验证请求来自具有有效API密钥的源?
任何人都可以提供有关我应该做什么的见解吗?我觉得这可能是任何客户端代码的漏洞,包括JavaScript,iOS和Android。
答案 0 :(得分:4)
你永远不能相信客户。即使你混淆了,有人仍然可以弄明白。例如,攻击者可以对混淆算法进行逆向工程,查看设备内存,甚至捕获通过线路发送的内容。
但是,您仍然可以通过在服务器端强制执行安全性来创建安全的应用程序。例如,用户需要进行身份验证才能成功发出特权API请求。
此外,您可以在服务器端强制执行API使用,无论是通过输入验证,速率限制还是IP地址跟踪。