当前位置:编程学习 > JAVA >>

不用验证码防刷注册的偏方。。

现在要做一个注册  不能加上类似验证码的东西 但是还要做到 防止被刷注册用户  怎么才能做到呢 要那种不需要用户额外操作的  起不起到很大作用没关系 只要能起到作用就好  最起码 达到  不会被很简单的  刷用户
    怎样才能实现呢 想了好久 没结果 --------------------编程问答-------------------- 动态字段名,也就是表单不是
<input name="userName" value="..." />
而是
<input name="gpX35t8L" value="..." />
具体字段的名字只有服务端知道,而且字段顺序不固定,可能是
用户:____________
邮箱:____________
密码:____________
也可能是
邮箱:____________
用户:____________
密码:____________
其中“邮箱”等label是随机路径的图片<img src="servelt?id=x3lGslt" />

--------------------编程问答-------------------- 要是struts的话建议看看token --------------------编程问答-------------------- http://www.wzsky.net/html/Program/jsp/81255.html --------------------编程问答-------------------- 好像不是很好,只客户端可以看到,并通过程序可以识别那就可能被刷注册用户 --------------------编程问答-------------------- 不是防刷新 是防 刷注册用户 --------------------编程问答-------------------- 记录请求注册地址IP 一天只能注册20个

虽然人家可以改IP~ 蹩脚的需求~ --------------------编程问答-------------------- 这个不可行
引用 6 楼 zn85600301 的回复:
记录请求注册地址IP 一天只能注册20个

虽然人家可以改IP~ 蹩脚的需求~
--------------------编程问答-------------------- 注册用户信息必须附带身份认证信息,如身份证号,如果此身份证号已存在则不允许再次使用此身份证号 --------------------编程问答--------------------
引用 1 楼 shine333 的回复:
动态字段名,也就是表单不是
<input name="userName" value="..." />
而是
<input name="gpX35t8L" value="..." />
具体字段的名字只有服务端知道,而且字段顺序不固定,可能是
用户:____________
邮箱:____________
密码:____________
也可能是
邮箱:____________……



那程序可能会先去解析这个 XML 获得 name 后再操作。 --------------------编程问答-------------------- 基本上满足不了,要是有的话,验证码估计也可以消失了 --------------------编程问答-------------------- token 并非struts的东东吧 自己也可以实现 --------------------编程问答-------------------- 一时想不出!
mark
--------------------编程问答-------------------- 不用全部满足 能起到一定作用 就可以 
引用 10 楼 huxiweng 的回复:
基本上满足不了,要是有的话,验证码估计也可以消失了
--------------------编程问答-------------------- 不用全部满足 能起到一定作用 就可以 
引用 10 楼 huxiweng 的回复:
基本上满足不了,要是有的话,验证码估计也可以消失了
--------------------编程问答--------------------
引用 2 楼 toss2000 的回复:
要是struts的话建议看看
token

这是最简单的了,说这个自己实现也可以,但是struts已经做得差不多了满足你这个问题是没问题了,也没什么麻烦的,

如果是struts2的话,
第一步:在表单中加入<s:token />
<s:form action="helloworld" method="post" namespace="/test">
  <s:textfield name="person.name"/><s:token/><s:submit/>
  </s:form>
第二步:加入拦截器 <interceptor-ref name="token" /> ,还要加入默认的拦截器
<action name="helloworld_*" class="cn.itcast.action.HelloWorldAction" method="">
       <interceptor-ref name="defaultStack" />
        <interceptor-ref name="token" />
        <result name="invalid.token">/WEB-INF/page/message.jsp</result>  
        <result>/WEB-INF/page/result.jsp</result>  
</action>
--------------------编程问答-------------------- --------------------编程问答-------------------- 用struts的令牌 --------------------编程问答-------------------- 可以往ip方向考虑下 --------------------编程问答-------------------- 还有一个就是用户电脑的ID --------------------编程问答--------------------
引用 1 楼 shine333 的回复:
动态字段名,也就是表单不是
<input name="userName" value="..." />
而是
<input name="gpX35t8L" value="..." />
具体字段的名字只有服务端知道,而且字段顺序不固定,可能是
用户:____________
邮箱:____________
密码:____________
也可能是
邮箱:____________
……
兄台这个思路不错,我很喜欢。但是这个放置不了 模拟的http请求恶意注册。 --------------------编程问答-------------------- SESSION存上次注册的时间,和这次的时间相比,间隔太短就不让注册。
--------------------编程问答--------------------
引用 20 楼 shuai45 的回复:
引用 1 楼 shine333 的回复:
动态字段名,也就是表单不是
<input name="userName" value="..." />
而是
<input name="gpX35t8L" value="..." />
具体字段的名字只有服务端知道,而且字段顺序不固定,可能是
用户:____________
邮箱:____________
密码:____________
……

是啊 模拟请求下 就攻破了 如果不用不同顺序的图片的话 --------------------编程问答--------------------
引用 1 楼 shine333 的回复:
动态字段名,也就是表单不是
<input name="userName" value="..." />
而是
<input name="gpX35t8L" value="..." />
具体字段的名字只有服务端知道,而且字段顺序不固定,可能是
用户:____________
邮箱:____________
密码:____________
也可能是
邮箱:____________……

这个可以考虑,不过仅仅顺序不同,图片路径随机还不到位,如果两次得到的图片相同,还是可以通过图片判断出所标识的字段到底是什么,如用户还是邮箱等,可以采取验证码的做法,随机生成这些标识图片的背景或增加随机点改变字体等办法,这样程序就无法判断输入框填入的是什么内容了,只不过还是可以通过程序提交一些无效的字符串给你,如123@456这样的字符串,他既可以作为邮箱,也可以作为用户或口令,要防止这样的恶意注册,还得在服务器端做很多的判断,并对用户、口令等在录入上做一些限定条件。 --------------------编程问答-------------------- 还有什么办法
引用 23 楼 new_bird_0001 的回复:
引用 1 楼 shine333 的回复:

动态字段名,也就是表单不是
<input name="userName" value="..." />
而是
<input name="gpX35t8L" value="..." />
具体字段的名字只有服务端知道,而且字段顺序不固定,可能是
用户:____________
邮箱:____________
密码:____________……
--------------------编程问答-------------------- 突破口就是:
如何能防止模拟http请求的恶意攻击。 --------------------编程问答-------------------- 建议你研究下这个游戏网站的注册
http://www.ucjoy.com/main/Qreg.html
模拟他ajax的注册请求被403了 --------------------编程问答--------------------        注册用户的时候 你可以根据邮箱 用户名 和电脑的ip地址 进行验证   重复注册肯定是不行的  那么你就获取别人电脑的ip地址  request.getRemoteAddr()//获取远程IP地址     如果是同一个ip多次进行注册    就不让他注册  邮箱也可以进行判断  这些都可以根据你的需求来做 --------------------编程问答-------------------- 大家想的都是些正统的方法 正统的方法肯定是不行的,毕竟破解的人 也不是没头没脑的人,我想想一个 不容易被发现的方法 ,哪怕那个方法容易被破解 要的就是破解的人 不注意 虽然 注册让他注册了 但是我知道这个账户是用程序刷出来的就可以了
    不知道我这样说 说明白了不 --------------------编程问答--------------------
引用 2 楼 toss2000 的回复:
要是struts的话建议看看token


token不是防止重复提交的吗?   跟楼主问的什么关系? --------------------编程问答-------------------- 楼主的想法很有开创性,我是想不到了,等大家想好了告诉我一下。这些正统的做法都是经过检验的,为什么不用? --------------------编程问答-------------------- 有什么方法教教我啊,集思广益啊
引用 30 楼 yin_slin 的回复:
楼主的想法很有开创性,我是想不到了,等大家想好了告诉我一下。这些正统的做法都是经过检验的,为什么不用?
--------------------编程问答-------------------- .................. --------------------编程问答-------------------- --------------------编程问答-------------------- 邮箱验证,一个邮箱只能用一次。 --------------------编程问答--------------------
引用 9 楼 bao110908 的回复:
[Quote=引用 1 楼 shine333 的回复:]

动态字段名,也就是表单不是
<input name="userName" value="..." />
而是
<input name="gpX35t8L" value="..." />
具体字段的名字只有服务端知道,而且字段顺序不固定,可能是
用户:____________
邮箱:____________
密码:____________
也可能是
邮箱:____________……



那程序可能会先去解析这个 XML 获得 name 后再操作。

哪里来的XML啊 --------------------编程问答-------------------- 另外,我这个的思路,就是将用户看到的,需要手工输入的验证码,转换为字段名称——不是input name="xxx"里面的xxx,而是<label>Yyy:<input ...</label>里面的Yyy——而且图片的样子随机,顺序随机,且控件名称也随机。

也就是说,原先要解析一次CAPTCHA的,现在可能需要解析N次,出错概率大幅提升。

当然,这个都只是理论上的。

最后,还有种方法,就是注册不直接激活,而需要发送激活邮件。每个邮箱只能激活一次,而且,仅接受几个大的服务商的邮箱地址(这类服务商注册的时候,已经有防恶意注册机制了)
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,