ホームページ >バックエンド開発 >PHPチュートリアル >用户频繁请求一个数据,怎样来设计验证码屏蔽

用户频繁请求一个数据,怎样来设计验证码屏蔽

WBOY
WBOYオリジナル
2016-06-06 20:44:46965ブラウズ

比如一个SNS社区中,一个用户不停添加好友,怀疑是机器人的行为,假设该机器人在某一时间内每隔3秒就发送一个好友请求,系统怎样来辨别这是机器人的行为然后生成验证码加以阻止,想了很久都没想到很好的解决方法

回复内容:

比如一个SNS社区中,一个用户不停添加好友,怀疑是机器人的行为,假设该机器人在某一时间内每隔3秒就发送一个好友请求,系统怎样来辨别这是机器人的行为然后生成验证码加以阻止,想了很久都没想到很好的解决方法

我觉得首先我们不用辨别是不是机器人,这些敏感操作最好带api key。对于该API根据uid或者api key设置 rate limit,例如1分钟不能发送加好友数超过20个。当超过时返回错误提示。假如它还继续发送大量请求,那么机器人无疑,完全禁止该uid的请求。

<code class="lang-php">function 添加朋友(){
    if(没登陆) die;
    if(当前时间-上次添加好友时间>3){
        继续添加好友
    }
    else{
        你添加的太快啦
    }
}
</code>

用图片验证码,如果是机器人,他破解需要时间。再限定一分钟同一账号提交数据的次数。

像腾讯,百度的验证码基本可以屏蔽%95的机器人了,网上有类似开源的验证码类。
制定一个规则,比如每个用户一分钟内只能添加10个好友(1分钟内超过5个时出现验证码),每天增加的好友上线为100个(超过50个时出现验证码)。把这些数据存到memcache中,每次用户发送添加好友的请求先对比下是否符合规则

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。