Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何对公共API进行评级限制?_Php_Api_Rate Limiting - Fatal编程技术网

Php 如何对公共API进行评级限制?

Php 如何对公共API进行评级限制?,php,api,rate-limiting,Php,Api,Rate Limiting,我有一个接收输入和输出的算法,我希望开发人员像API一样使用它。为了防止拒绝服务攻击和过度使用,我需要一些速率限制或保护。我有什么选择?我是否提供帐户和API密钥?这通常是如何工作的?对于这个场景,还有什么其他的想法呢?帐户和API密钥听起来确实是个好主意,如果没有其他东西可以阻止除您的预期开发人员之外的其他人访问您的API的话 让一个简单的数据库表记录上一次访问某个特定API的时间,如果在某个时间范围内访问过多次,则拒绝重用,这应该是相当简单的。如果可能的话,下次API可以在输出中重用时返回,

我有一个接收输入和输出的算法,我希望开发人员像API一样使用它。为了防止拒绝服务攻击和过度使用,我需要一些速率限制或保护。我有什么选择?我是否提供帐户和API密钥?这通常是如何工作的?对于这个场景,还有什么其他的想法呢?

帐户和API密钥听起来确实是个好主意,如果没有其他东西可以阻止除您的预期开发人员之外的其他人访问您的API的话

让一个简单的数据库表记录上一次访问某个特定API的时间,如果在某个时间范围内访问过多次,则拒绝重用,这应该是相当简单的。如果可能的话,下次API可以在输出中重用时返回,这样开发人员就可以相应地进行节流,而不必采用反复试验的方法


您是否希望重复使用相同的输入,还是完全随机?缓存输出并只向开发人员提供缓存,直到API准备好可重用为止,怎么样?这种方法对帐户和密钥的依赖性也要小得多。

以牺牲准确性为代价稍微不那么复杂的其他选项是使用ip地址。显然,这更容易克服,但对于不知道ip地址是什么的普通用户来说,这是可行的。也很容易设置


这完全取决于应用程序的复杂性和使用API密钥所需的时间,如果最终用户将通过第三方构建的应用程序访问服务,那么openAuth()也是一个不错的选择

如果您不想自己编写费率限制/密钥管理代码,那么值得一看,这项免费的开箱即用服务(加上其他东西,包括开发人员门户、计费等)主要是由谁来完成的。作为免责声明,我在那里工作,所以我可能有一些偏见,但我们试图使这尽可能简单


我应该补充一点,您可以在代码中添加一个,它将启用所有速率限制等。

您想提供一个解压缩API吗?这真的有意义吗?我想现在大多数PHP安装都是本机解压安装的,不是吗?标题似乎与问题无关。解压是我几天前键入的另一个问题,并保留在缓存中。抱歉弄混了。因此,如果现有的问题尚未提交,那么似乎要用javascript复制文本。