1. 之前的一个项目,注册被人不断注册.基本一分钟就要好几个.明显被攻击了.
2. asp.net 的项目. 按钮是服务器控件,表单数据提交到后台实现数据插入.
3. 已经做了验证码,但是发现还是没什么太大的用,因为还是有什么赌球子类的用户名注册.
4. 已经做了关键字过滤,但是发现道 高一尺魔高一丈 什么繁体字又出来了.
5.因为已经是很早的项目,所以流程变动,比如手机验证码注册验证这些,其他人都要配合,什么样式啊,风格什么的,在加上比较老的项目了,维护的非常费劲,不知道动一下会出现什么比的状况.
6.最后求助, 各位的是, 它是通过什么手段不停的向我们的数据库中灌入垃圾数据.
有什么好的解决办法嘛?
7. 再次因为混的比较少,所以园豆比较少,敬请谅解,谢谢各位
帅哥,对于这个问题,不能光从技术上考虑,因为问题出现在业务上,业务上的问题技术只能帮助辅助,但是无法彻底解决。
我们来分析一下你的问题。首先是注册界面,你别管别人注册多快,也别管别人是不是真人,只是填进来的是你想要的数据就可以了,你就当他是真人得了,怕什么?就算是一秒一个,你数据库也放得下的,只是这个“人”符合你的要求。那么,问题来了,什么样子叫符合要求呢?有的网站要求有真名、有的要求有身份证,有的要求有正确的邮箱,有的要求有生日,等等。
现在解决的最好的办法就是:
要求邮箱验证,在你后台的表里面邮箱不许重复,然后,发验证链接到邮箱,让用户自己去点,这样才通过验证。通过这样的方式,基本上垃圾注册就解决了,你若问我他还是用程序自动处理怎么办,那么我告诉你,你别管他用的是什么,只有一个用户有一个邮箱,你就认为他是真的用户,这不挺好的么?
对于你最后问的,他是通过什么进行攻击的,这种方式有很多种,最简单的就是写个程序,自动注册,在验证码的地方弹出让人工输入,也就是说,他只需要不停地输入验证码就可以了,5秒不到就能输入一个吧?所以,一分钟10个还是少的了。
总结一下,减少用户注册频率以及加难验证码都不是最终的手段,12306使用验证码是为了不让用户无限的无间隔重复请求。而你的不一样,你的只要求用户注册的时候是有效用户。所以你的要简单得多,只需要保证用户唯一性即可,而邮箱则是最好的手段。他给你倒1万条垃圾,就要注册一万个邮箱,注册邮箱的时候邮箱服务商肯定也是有校验的,你有1万的垃圾,那么邮件服务商肯定也得有,所以,你不用怕,他们会处理好的。
这个跟.net有个屁关系,系统本来就是可以让人注册的,注册的验证手段又只有验证码,人家解决了验证码当然就能注册。
这都不算攻击。本身都是你系统允许的事情。是你们做产品的时候不考虑这种情况
简单的解决办法就是修改生成验证码的逻辑。使生成的验证码变复杂。
对,我明白, 但是手速快的也不至于1分钟注册10个帐号吧.
@nancy0129: 肯定是人家写代码机器注册的,这个不纠结。只是说你们注册验证码太简单。明知道自己系统的验证方式有问题,还不改。有指望直接就能不让机器注册。总结一个字:懒
PD:其实就算再复杂也没有用。12306那么复杂不还是一样能抢票。简单的做法是用手机号验证码验证,增加批量注册用户的成本。
IP限制吧。控制,一个IP,24小时,注册总数。或者,一段时间内的注册量。like qq.
IP控制肯定是不行的,如果有负载均衡之类的反向代理,取的ip本身就是自己公司反向代理的IP。再者,用户如果在学校或者公司等机构,不同的机器使用的IP多数情况下也是一样的。所以,腾讯也没有使用IP做为限制吧,哥们。现在投标都不能用IP了。
@ensleep: 腾讯没有IP限制,你一个IP注册QQ试试呢,最多3个,怎么都不会超过3个。
@Supper_litt: 我没试过,也不想试,但是,腾讯这么大的公司应该使用的是集群服务了,你确定不是利用缓存或者cookies来限制你注册的个数的?
@ensleep: 用了反向代理,就得不到真是IP了?你想多了。
我有个建议,你直接用第三方系统注册,例如直接用微信授权登录。