用count限制某些操作访问?
问题描述:
这更像是一个安全问题。 实施诸如“每x次按IP计算特定页面访问次数”并在超出限制时阻止该IP地址的最佳实践是什么?用count限制某些操作访问?
一些步骤:
- 用户进入网站
- 用户选择产品购买
- 填写表格并提交形式
- 重定向到支付网关
我怎样才能限制每30秒5个表格子弹?如果用户每30个IP有6个被阻止30分钟?
谢谢。
答
您将要将操作或请求与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
2个意见我可以分享,你可以使用超过半小时后超时的活动会话,也可以使用数据库变体。 – John 2011-06-01 13:49:26