如何防止网站进行不必要的系统生成的HTTP调用

时间:2012-12-17 08:46:59

标签: php http

我有一个动态的php页面,它将用户选择的pol选项更新为DB。有时我的Apache服务器只是通过调用此页面而超载(意味着有人使用脚本在循环中调用它) 你能帮我防止这个吗?

我计划这样做:

  1. 对于memcache中的每个请求,我都不会将请求作为计数器(密钥:md5(用户IP),值:计数器)
  2. 如果计数器在10秒内超过10,我将阻止该用户。
  3. 但是保持Ip作为密钥是行不通的,因为许多组织对所有员工系统使用单个互联网IP。

2 个答案:

答案 0 :(得分:1)

与大多数民意调查一样,您需要一种方法来确保用户只能投票一次。有几种方法可以确保只投一票。

  • 需要注册用户(最安全,最安全)
  • 每个IP一票(同一个IP上有多个用户的问题)
  • 每个IP每分钟投票一次(更好地防止超载,但不是虚假投票)
  • 用于阻止自动提交的验证码(我喜欢这个,http://www.webappers.com/2011/03/03/a-draggable-jquery-captcha-system-with-jquery-ui/
  • pol中的隐藏代码,只能使用一次。每次生成pol时,都会生成一次使用的代码。没有代码,错误的代码或使用过的代码没有投票。有点像隐藏的验证码。更加用户友好但不太安全。

这一切都取决于你想要防止的东西。如果它只是超载,但人们可以投票多一次,那么你有更多的选择。如果您只想允许每个用户进行一次投票,则只有注册系统是安全的。虽然当然有人可以创建一个以上的帐户。

答案 1 :(得分:0)

虽然我通常讨厌Captcha ......你可以尝试在你的网站上实现一个。您甚至可以使Captcha仅在来自同一IP的X个投票后出现,以便普通公众甚至不会看到它。