Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[补丁] 防止暴力注册的方法 作者:deepseath

[复制链接]
童虎 发表于 2005-9-21 16:54:57 | 显示全部楼层 |阅读模式
好多站现在被那些垃圾的注册机给骚扰了,偶的小站前两天也有,太恶心了
其实有一个小办法很容易防止的,即便不会彻底根除但是至少也会让那些畜生辛苦一下的。

原理很简单,一会开始做的时候稍微懂点的朋友都能明白怎么回事。

注意这个功能不会在标准程序中加入的,原因很简单,标准中存在了让人研究透了还是没什么意义的了。

开始付诸行动吧:
为了方便日后维护,本修改部分都有极其详细的标记说明。

首先编辑打开config.php,在最下面加入如下内容:
//开始防止注册机注册限制功能:Deepseath 2005年8月16日 16:15:11
        $dpformhashvariable        =        'ASDF324234asdfs123';
                //设置个性标记名,长度没有限制,但是最好小于64位,只能包含字母以及数字,不允许出现空格
                //最好不要与其他论坛一样,否则这个功能没多大意义了
                //如果此处为空则关闭本功能——不开启防注册机注册功能


        $dpformhasherror        =        '抱歉!非法注册!!';
                //此处为非法注册失败时候出现的提示内容。
//本修改涉及3个文件:config.inc.php、register.php、模板register.htm
//本修改来源自:https://discuz.dismall.com/viewthread.php?tid=153832
///////////结束功能定制。
请将上面红色部分改为其他字符!!!!!如果此处为空 或者 同默认一样 的话这个功能 可能无效 或者 不会被启用的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

然后编辑模板register.htm在表单范围内加入如下内容:

  1. {eval /*开始防止注册机注册限制功能:Deepseath 2005年8月16日 16:15:11*/}
  2. <!--{if $dpformhashvariable}-->
  3.         {eval $dp_form_hash_variable        =        'dp_'.$dpformhashvariable.'_'.$timestamp;}
  4.         {eval $dp_form_hash_value        =        md5('deepseath'.substr($timestamp,-6).$dpformhashvariable.$timestamp.'deepseath');}
  5.         {eval echo "<input type="hidden" name="".$dp_form_hash_variable."" value="".$dp_form_hash_value."">";}
  6.         {eval echo "<input type="hidden" name="dp_form_hash_variable_re" value="".($timestamp - 19790731)."">";}
  7. <!--{/if}-->
  8. {eval /*本修改涉及3个文件:config.inc.php、register.php、模板register.htm*/}
  9. {eval /*本修改来源自:https://discuz.dismall.com/viewthread.php?tid=153832 */}
复制代码

比如,你可以将这段代码加入到
  1.         <tr>
  2.         <td class="altbg1">{lang email}:</td>
  3.         <td class="altbg2"><input type="text" name="email" size="25"><!--{if $regverify == 1}-->  <span class="smalltxt">{lang register_email_comment}</span><!--{/if}--></td>
  4.         </tr>
复制代码
后面,位置随便,只要在<form>表单域里面就行。

最后编辑打开register.php,查找
  1.         if(!isemail($email)) {
  2.                 showmessage('profile_email_illegal');
  3.         }
复制代码
在其下面加入

  1. //开始防止注册机注册限制功能:Deepseath 2005年8月16日 16:15:11
  2.         if ($dpformhashvariable) {
  3.                 $dp_form_hash_time                =        $dp_form_hash_variable_re+19790731;
  4.                 $dp_form_hash_variable        =        'dp_'.$dpformhashvariable.'_'.$dp_form_hash_time;
  5.                 if (empty($dp_form_hash_variable_re) || empty($$dp_form_hash_variable) || $dp_form_hash_time >= $timestamp || $$dp_form_hash_variable != md5('deepseath'.substr($dp_form_hash_time,-6).$dpformhashvariable.$dp_form_hash_time.'deepseath') || $timestamp - $dp_form_hash_time > 900) {
  6.                         showmessage($dpformhasherror);
  7.                 }
  8.         }
  9. //本修改涉及3个文件:config.php、register.php、模板register.htm
  10. //本修改来源自:https://discuz.dismall.com/viewthread.php?tid=153832
复制代码


相信明白程序的朋友一下就能看明白是怎么回事。这里就不解释了。希望能给大家一点帮助吧。

上次我写过一个不过有些朋友说已经失效了,所以找到深海大大的一个文章,希望能有用
winter0706 发表于 2005-9-21 16:58:44 | 显示全部楼层
是deepseath的小站前两天也有還是大大的小站前两天也有?
回复

使用道具 举报

beecheung 发表于 2005-9-21 17:03:52 | 显示全部楼层
对于大站,这东西确实不错
回复

使用道具 举报

winter0706 发表于 2005-9-21 17:17:04 | 显示全部楼层
順便問一下~注册机的原理是什麼?直接傳入資料不經註冊頁?

p.s.2.5不是config.inc.php啊^^
回复

使用道具 举报

qxbug 发表于 2005-9-21 17:30:31 | 显示全部楼层
马上去装
深受此毒害啊
回复

使用道具 举报

bydy 发表于 2005-9-21 17:39:58 | 显示全部楼层
这个是什么原理
回复

使用道具 举报

xjbl 发表于 2005-9-21 17:46:16 | 显示全部楼层
看不懂....
回复

使用道具 举报

爱雨冷雪 发表于 2005-9-21 18:02:34 | 显示全部楼层
嘻嘻,小站暂时没有这问题,不过也要装上预防.
回复

使用道具 举报

hufanyun 发表于 2005-9-21 18:32:46 | 显示全部楼层
明白了.原来这样嘿嘿
回复

使用道具 举报

yotowan 发表于 2005-9-21 19:05:46 | 显示全部楼层
用註冊驗證碼不就可以了嗎
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-22 21:50 , Processed in 0.025579 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表