如何有效防止恶意注册与灌水?

MyDawnGLL
  • 590

我知道这种有效也是相对的。
注册:验证码+邮件验证;
发帖:一小时之内发帖超过5条,需要验证码,发帖时间间隔至少一分钟。
(验证码有一定的噪声)

请问这种机制可以把恶意注册与灌水的可能性降到最低吗?不知道大家有什么好的方法?请教!

回复
阅读 7.8k
5 个回答
  1. 别以为验证码很可靠:http://segmentfault.com/q/1010000000374726/a-1020000000374798
    破验证码有专门的服务,破一个不过一两分钱。
  2. http://segmentfault.com/q/1010000000343655#a-1020000000343685
    这个很长的答案针对:(1)注册把关防止广告狗 (2)防止无意义但非广告的灌水。
  3. 广告狗们往往会简单开发一些发帖机,并且在狗们聚集的圈子里无脑互传。所以一段时间内的SPAM其实往往会呈现出一些普遍的特征。
    如果一段时间内涌入大量SPAM,则完全可以分析这些特征,随时在程序里加小招式防御。
  4. 虚虚实实,兵不厌诈。
    决定过滤用户内容时,大可不必明文发送403等拒绝信息,而是发送200让攻击者误以为发送成功,麻痹对方。
  5. 学术上来看,过滤SPAM用贝叶斯是唯一可靠的方法。敏感词、IP等等简单的封锁,全都费力不讨好。
  6. “发帖时间间隔至少一分钟”对手快的用户还是有点残忍,半分钟吧

如果是防止用户手工恶意注册和灌水,你的方案已经足够了;如果是为了防止注册机和灌水机,最容易实现的思路有两个,一是多用点ajax,二是不用基于浏览器端cookie的session机制。

其实你的方案对防止人的攻击来说已经够用了。

还有种思路防止 robot 恶意 spam 攻击:用 JavaScript 监控键盘和鼠标轨迹事件,发给 server 端 ,以 IP 地址、用户帐号纬度做事件频率的统计。如果是 robot 发起的 spam 攻击,那么就不会有比较随机的键盘和鼠标事件,则触发一定的 block 机制,比如封 IP 等。

当然这种实现成本会比较高,但是效果是不错的。

对自动机有效

但是对付人肉的话还远远不够

曾经做过手机验证,并且相同号段一天之内不能激活>1个账号,可怕人肉们每天依然可以弄到一大批手机号来接收验证码。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏