如何有效的防止网站被恶意注册?

刚刚看到SF上面一个问题《如何有效的防止网站被恶意登录》,主要是从安全性问题出发,探讨防止探测用户的真实密码信息;那在如何防止注册机或者程序恶意注册发垃圾信息这方面大家一般是怎么做的?
我想这两个问题有些地方上面有一些设计思想应该是共通的。

阅读 20.5k
5 个回答

最近正好在斗spammer,有一些体会,不一定是技术上的。
防止恶意基本的方法:

  • 邮箱需要验证
  • 单IP注册频率限制
  • 表单加验证码
  • 需要姓名加身份证认证
  • 手机绑定验证

但是所谓是药三分毒,这样下来,你的产品注册流程也就会让人抓狂,用户和产品经理想必都是无法接受的。下面说一些技术上的方案:

  • 在注册页面添加随机码,并将这个码随注册post表单一起提交(基本上让它必须先抓页面再提表单)
  • 在注册页面中埋资源,比如添加一个img 标签,src地址其实是一个动态脚本,会进行访问日志记录。在提交注册post表单时,如果当前ip没有请求过这个动态脚本,那么就是机器人。这个img标签可以定时换,比如明天换成另一个地址或者放在一个script标签里面,甚至是让一段js去触发请求。
  • IP钓鱼,很多spammer的IP资源都不太丰富,所以基本上是一大堆IP做代理。于是出现了这个方法。在进行完上一条说的的埋资源方法后,聪明的spammer通常会快速进化出变种,在后续的请求会聪明地先请求这个脚本再post表单。一旦spammer发现这个策略,你就可以反其道而行。将这个动态脚本从页面中去掉,这时候正常用户就访问不到了,但是spammer可能还不知道。他们会继续访问这个已经没有入口的脚本,于是你可以改造这个脚本的功能,变成一个垃圾IP收集器,收集到的IP直接封若干时间。这个方法还是挺有效的。

其实方法有还很多,包括用户名判断,邮箱白名单等等。但是真正要挡住攻击还是很难,道高一尺魔高一丈。
所以这里并不是要讲具体的方法,而是想说,spammer也是人,而且是有直接商业目的的。你的网站不会是唯一可攻击的山头,如果你提高门槛,跟他斗个十天半月,当他发现你这个地方投入产出比过高,老是需要投入人力搞对抗,基本上也就不会在这浪费时间了。这不是纯的技术斗争,更多的是带着成本考虑的工程较量。所以目的是如何搞疲它,赶走它,而不是栏住它。

要让批量注册的成本高于从你网站获取到的利益

注册不就是个POST请求么,想彻底避免只有加强验证码了。其他方法,我总能找到办法绕过。

绝对防止恶意注册是不可能、不实际、不现实的。

全国范围内雇佣一批水军真人注册(很现实,QQ随便搜个类似的群提供几百、几千的用户,注册一次几几分钱),你能奈我何?

验证码、频率封IP。我想不到其他方法。

偏运营角度来讲
注册用户不会对已有正常会员造成直接损失
可能对应用造成的影响
1.db里的垃圾数据
2.带宽 服务器性能不足时 大批量的恶意注册可能导致正常业务的缓慢
3.一些应用场景 比如新浪微博 僵尸粉 水军之类的
4....
既然注册&登陆 技术不好解决 就还是做好业务监控
做到遭受攻击时可以马上获取相关信息
并能通过特定条件标记这些恶意注册的用户 以便后续观察这批用户的行为

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