2011-06-01 113 views
1

这更像是一个安全问题。 实施诸如“每x次按IP计算特定页面访问次数”并在超出限制时阻止该IP地址的最佳实践是什么?用count限制某些操作访问?

一些步骤:

  1. 用户进入网站
  2. 用户选择产品购买
  3. 填写表格并提交形式
  4. 重定向到支付网关

我怎样才能限制每30秒5个表格子弹?如果用户每30个IP有6个被阻止30分钟?

谢谢。

+0

2个意见我可以分享,你可以使用超过半小时后超时的活动会话,也可以使用数据库变体。 – John 2011-06-01 13:49:26

回答

1

您将要将操作或请求与time()一起存储在数据库中。然后运行一个简单的mysql_query()来检查用户是否超出了限制。例如。

"SELECT * FROM `requests` WHERE 
    `request_time` > '".(time() - (30 * 60))."' AND 
    `ip_address` = '".$_SERVER['REMOTE_ADDR']."';" 

此查询应该返回小于5

您可以在用户每次加载页面或提交表单,并简单地结束脚本的执行时间运行此查询的mysql_num_rows()

您可能还需要偶尔运行查询以删除旧行,可能使用cron作业。

+0

是的,谢谢,我想我会用这个方法与crontab。 – arma 2011-06-02 10:35:24

相关问题