如果你已经问过并回答了这个问题,我很抱歉;我四处看看,但没有找到我想要的东西。
--
在这种情况下,如何防止某人在非web客户端应用程序中使用您的API?例如,iPhone应用程序,或服务器端。
据我理解,第2点删除了类似OAuth的选项,第3点删除了例如API密钥甚至SSL的选项。
我曾经考虑过像基于时间的令牌或秘密盐类,它们在第一次加载时就被注入到页面中,但是iPhone应用程序可以很容易地在发出API请求之前偷偷地加载您的网页。
那么,除了普通的模糊--通过默默无闻的安全,还有什么办法吗?
--
如果所有这些都太抽象,下面是一个简单的例子:
Google.com通过一些私有和无文档的API获取其自动完成的数据,但在网络上是开放的。有什么能阻止我在我的iPhone应用中使用它呢?
发布于 2011-03-19 03:56:26
您不能阻止人们复制您的客户端代码或重播网络流量。
多亏了同源政策,其他web应用程序无法从客户端访问您的API。他们将不得不通过服务器代理他们的请求,这意味着这些请求将来自少数容易识别的IP地址,您可以暂时将其列入黑名单。
至于桌面和移动应用程序,你没什么可以做的。我的建议是在他们成为问题之前不要担心他们。
尽管如此,做好准备并不伤人。如果您想避免昂贵的法律纠纷,您可以做的一件事就是不时地更改您的API方法签名。浸出应用程序可以修复,但它们的声誉将持续下降。
发布于 2012-09-06 06:43:18
身份验证也不能防止API的滥用。只要客户端能够正确地与您的系统进行身份验证,他就可以使用他/她选择的任何客户端。只有客户端和服务器都是安全的,并且连接是安全的,才能避免滥用。
如果问题是滥用,那么一个简单的节流解决方案就足够了。
发布于 2011-03-17 02:18:35
如果您的客户端有隐藏的代码,您可以不按您的建议做,使用盐类、ip地址和基于时间的值,对它们进行加密,然后在服务器端执行相同的操作吗?这基本上就是mod_auth_tkt所做的,而且它工作得很好。或者这是否构成身份验证?
https://stackoverflow.com/questions/5333368
复制相似问题