2015-05-09 46 views
2

我正在使用一个简单的PHP API,它接受请求并连接到MySQL DB以存储/检索用户信息。示例:使用用户名和密码使用HTTP POST对API进行登录。如何阻止人们淹没PHP API的请求?

我该如何防止人们使用请求泛滥我的API,可能会在几秒钟内创建数千个帐户。

感谢

+0

注册自己的IP在一个表和计数的请求数。定义一个限制(例如,每12个小时的请求),检查新的请求进入时的请求数量,如果超过限制则拒绝。 **编辑**除了确保人类输入数据之外,还应考虑使用CAPTCHA机制。 – nhee

+0

在表单和API中使用captcha检查表单是否提交?例如if($ _ SERVER ['REQUEST_METHOD'] =='POST') – user1844933

+0

我们在这个问题上在哪里?如果您收到答案,请将其标记 –

回答

2

你可以成为产生并记住其上呈现在你的表单和验证时发送的形式返回到你的服务器在服务器端的令牌。这样可以防止用户在不实际向服务器请求相应表单的情况下生成新的请求,因为他们需要在服务器上生成相应的令牌。

然后有提到的验证码,这对于我的观点来说对登录表单来说太过分了,但是当涉及到注册新用户这样的事情时,验证码与标记结合起来对我来说听起来非常好。

UPDATE 我刚刚发现this article这是对一般的脚本执行的FLOOT保护。我认为他们的方法很好,因为ip跟踪提供了使用memcache或类似的功能来加速检查的能力。

1

首先,在注册用户时,还需要在注册时将她的IP地址保存在数据库中。

如果IP在先前注册的45分钟内已存在,请拒绝该请求。

另一种方法是验证码,我个人更喜欢另一种方法,我发现它对机器人更有效。

而是询问用户“输入他们的图像中看到的”,并确认它们是人类(或复杂的图像处理机器人)的,

添加(例如城市)另一个领域,并使其用javascript隐藏。

机器人会将该字段提交给服务器,而人类则不会。

请注意,机器人必须运行JavaScript才能知道隐藏的字段,这是一个耗时的过程,他们通常不会这样做。

(见turing halting problem