保护API免受滥用至关重要的是什么?

时间:2010-10-20 03:41:38

标签: php api web

只是想了解应该采取哪些措施来防止API被滥用......

4 个答案:

答案 0 :(得分:5)

根据使用情况,您可以:

  1. 需要身份验证(每个用户的令牌)
  2. 限制访问率(x每次点击次数)
  3. 限制通过IP访问
  4. 限制交易规模
  5. 限制每个时间段的响应大小
  6. 让人们好看

答案 1 :(得分:0)

考虑封装和范围,限制对API的某些元素和组件的访问。例如,ur API可能有内部变量,可用于各种内部类;但是,如果开发人员使用可能会偏移API中的整个数据集的重要变量,那么您肯定希望限制对它的访问,一种方式(作为示例的一部分)使用类扩展或者根据需要传递变量并使用本地声明而不是全局声明。 此外,如果您使用头文件使用C ++是限制API暴露的好方法。

总的来说,这种技术在某种程度上与语言有关,我建议您阅读特定于您打算使用的语言的概念和范围。

PS:方法也有各种范围关键字,例如protected等。

我希望这会有所帮助...

{编辑} 刚注意到PHP标签,我认为进行API封装的一种好方法是限制通过Web应用程序的POST / GET Web操作进行访问,并验证来自此类查询的输入......

答案 2 :(得分:0)

  1. 开发人员的API密钥,确保API不是完全开放的,这样任何人都可以发出请求。
  2. 用户的会话跟踪,如@vsz所说。确保每个用户都获得一个唯一生成的令牌,并不时刷新它。我个人使用随机数据的sha256哈希来生成用户令牌。
  3. 根据将要使用您的API的人员,最好将数据库中的任何类型的输入/更新引用到特定的API密钥,这样如果某些开发人员拥有有效的API密钥但是他们编写的是恶意的代码或某人发现了漏洞利用,您可以随时返回并删除任何恶意数据,垃圾邮件等。
  4. 如果您提供了有关API的更多详细信息,我们可以提供更好的答案

答案 3 :(得分:0)

这完全取决于API的确切性质。 (API允许访问的资源有多大价值?您担心什么类型的滥用?等等。)一些典型的事情包括:

  • 限制访问您的API(例如每秒通话次数),例如防止过多的服务器负载
  • 限制可从API获取的数据量(例如,每月的数据记录),例如防止人们窃取您的数据
  • 要求用户在使用API​​之前注册,并可能让他们验证他们的电子邮件甚至是电话号码,以确保您真正了解他们的身份
  • 要求用户在使用API​​之前接受许可协议
  • 仅限某些客户使用API​​的某些部分
  • 为访问API收取费用(例如,当人们超出配额或需要特殊许可条款时)

考虑使用外部服务来完成所有这些工作。我的公司WebServius(http://www.webservius.com)就是一个例子,还有其他一些例子。