也许我要求一些不可能的东西,但是我们走了:我正在尝试找到一种方法来验证客户端对API的请求,但是有些客户端只能使用JavaScript来发送他们的请求(他们使用托管服务,不允许写一行服务器端代码)。这意味着任何API Key,secret或hash都必须由JavaScript处理,这实际上使它们无用。
我见过一些使用严重混淆代码的API,但在我看来,这种方法给出了一种错误的安全感(可以使用JavaScript Beautifier轻松阅读)。有没有更好的方法?
提前感谢所有答案。
答案 0 :(得分:2)
不,JavaScript是开放的,这意味着零安全。
最明智的做法是通过您拥有的服务器代理API,然后让人们使用他们的密钥注册到服务器。
这意味着即使他们没有任何服务器端代码,也没关系,因为您为他们托管服务器。
答案 1 :(得分:2)
用JavaScript完全没有办法完成这项工作。我曾经使用的唯一选项是限制JavaScript客户端的IP地址或其他形式的身份验证。在身份验证/授权之后,然后通过HTTPS传递它们的秘密密钥,该密钥仅与客户端保持一点(即不存储在任何地方)。
缺点是聪明的恶意用户可以很容易地调试JavaScript并确定此密钥。