如何实现一个ip规定时间内post提交次数一定,超过就提示n分钟之后再post

2013-06-07 12:51:41 +08:00
 TheMan
防止恶意提交表单(比如暴力破解)。。目前不想弄验证码。。。
3393 次点击
所在节点    问与答
7 条回复
nybux
2013-06-07 14:06:40 +08:00
每个ip建立一个queue,每次访问的时候,先把n时间外的数据都pop丢掉,然后查看队列的数量,超过标准则不能再访问,告诉用户等待 n-(当前时间-队列头部时间) 时间单位
jevonszmx
2013-06-07 23:13:38 +08:00
use redis:
0.成功post记录redis,使用sorted sets,例如key为:post:ip:198.168.0.256:list,score为post时的时间戳,值嘛1就ok了;
1.每个ip每次post前将指定时间戳前的值remove(ZREMRANGEBYSCORE)掉,然后统计一次(ZCARD)sets的长度,看看是否超标了,超标了就提示,否则重复0;

ok!!
TheMan
2013-06-08 08:09:39 +08:00
@jevonszmx 好高
jevonszmx
2013-06-09 08:41:28 +08:00
@TheMan
??
搞定没?
vking
2013-06-09 08:49:47 +08:00
wordpress 有这个函数,可以找找。
TheMan
2013-06-09 18:27:31 +08:00
@vking 嗯,找找
TheMan
2013-06-09 18:28:01 +08:00
@jevonszmx 搞定~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/71577

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX