22 12
发新话题
打印

【discuz优化】防暴力注册机之又一招

【discuz优化】防暴力注册机之又一招

防止暴力注册 by angel 原创


版权所有
http://www.freediscuz.net
http://www.sablog.net/bbs

演示
http://www.sablog.net/bbs

我找啊找啊。在官方找了N久找到一个计算题的。是kengni.com的。
http://www.discuz.net/thread-466298-1-1.html

不过我不喜欢4K多的代码。而且他的程序是把结果写在hidden表单里。然后和提交的结果通过解密对比。可能以前见过太多hidden安全的案例,所以习惯上还是自己想一个。毕竟自己写的还是比较有成就感的。

因为游客在sessions表里记录的username是空的。我可以利用这个地方来保存随机的结果。因为每次刷新页面,这个表会被更新。废话不多说。

include/global.func.php文件里updatesession()那段。

查找
复制内容到剪贴板
代码:
global $db, $tablepre, $sessionexists, $sessionupdated, $sid, $onlineip, $discuz_uid, $discuz_user, $timestamp, $lastactivity, $seccode,
                $pvfrequence, $spageviews, $lastolupdate, $oltimespan, $onlinehold, $groupid, $styleid, $invisible, $discuz_action, $fid, $tid, $bloguid, $onlinehold;
修改为
复制内容到剪贴板
代码:
global $db, $tablepre, $sessionexists, $sessionupdated, $sid, $onlineip, $discuz_uid, $discuz_user, $timestamp, $lastactivity, $seccode,
                $pvfrequence, $spageviews, $lastolupdate, $oltimespan, $onlinehold, $groupid, $styleid, $invisible, $discuz_action, $fid, $tid, $bloguid, $onlinehold,  $reckon_result;
查找
复制内容到剪贴板
代码:
if($sessionexists == 1) {
在上面添加
复制内容到剪贴板
代码:
$discuz_user = $discuz_user ? $discuz_user : ($reckon_result ? intval($reckon_result) : '');
include/common.inc.php

查找
复制内容到剪贴板
代码:
$charset = $dbcharset = $forumfounders = '';
修改为
复制内容到剪贴板
代码:
$charset = $dbcharset = $forumfounders = $reckon_result_db = $reckon_result = ''; //初始化很重要哦
查找
复制内容到剪贴板
代码:
$query = $db->query("SELECT sid, uid AS sessionuid, groupid, groupid='6' AS ipbanned, pageviews AS spageviews, styleid, lastolupdate, seccode
修改为
复制内容到剪贴板
代码:
$query = $db->query("SELECT sid, uid AS sessionuid, username AS reckon_result_db, groupid, groupid='6' AS ipbanned, pageviews AS spageviews, styleid, lastolupdate, seccode
register.php

查找
复制内容到剪贴板
代码:
$enctype = $groupinfo['allowavatar'] == 3 ? 'enctype="multipart/form-data"' : NULL;
在下面添加
复制内容到剪贴板
代码:
                $reckon_answer1 = rand(0, 9);
                $reckon_answer2 = rand(0, 9);
                $reckon_result = $reckon_answer1 + $reckon_answer2;
查找
复制内容到剪贴板
代码:
$email = trim($email);
在下面添加
复制内容到剪贴板
代码:
        if (!$reckon_result_db || ($reckonresult != $reckon_result_db)) {
                showmessage('答案错误,请返回并刷新重新输入。');
        }
register.htm

查找
复制内容到剪贴板
代码:
        <tr>
        <td class="altbg1"><span class="bold">{lang password_confirm}</span></td>
        <td class="altbg2"><div class="input"><input type="password" name="password2" size="25" id="password2" onBlur="checkpassword2()"></div><div id="checkpassword2"></div></td>
        </tr>
在下面添加
复制内容到剪贴板
代码:
        <tr>
        <td class="altbg1"><span class="bold">防止暴力注册</span></td>
        <td class="altbg2"><div class="input"><input type="text" name="reckonresult" size="25" maxlength="15"></div>请将 <img src="images/common/number{$reckon_answer1}.gif" border="0" alt="" /> + <img src="images/common/number{$reckon_answer2}.gif" border="0" alt="" /> 的答案写在左边的输入框内</td>
        </tr>
搞定!

Discuz!5 Lite已经内置此功能。并带后台开关和相关语言包。
妖城欢迎您!

TOP

其实防暴注册只要开启注册一些相关验证就可以的了。~
═→這個ㄝ琾詪哯實←╬→亾祗螚靠冄魢←═


═→〈婆娘﹎关灯﹎拉帘﹎←╬→上床﹎恩哼﹎oo造BaBy﹎〉←═

TOP

暴力注册。。
~我的丗界,隻有妳能領銜主演☆~

TOP

哈哈..这就是那天我问的问题..嘿嘿..
友情连接:第七大陆

TOP

引用:
原帖由 xuyaoxy 于 2008-3-24 02:20 发表
哈哈..这就是那天我问的问题..嘿嘿..
- -
你又不问我~~~
═→這個ㄝ琾詪哯實←╬→亾祗螚靠冄魢←═


═→〈婆娘﹎关灯﹎拉帘﹎←╬→上床﹎恩哼﹎oo造BaBy﹎〉←═

TOP

- -谁找的到你啊...Q联系你又不在
友情连接:第七大陆

TOP

妖城PM一下...就知道!!~~~
═→這個ㄝ琾詪哯實←╬→亾祗螚靠冄魢←═


═→〈婆娘﹎关灯﹎拉帘﹎←╬→上床﹎恩哼﹎oo造BaBy﹎〉←═

TOP

呵呵..我懒的PM了..累了..一会儿去睡觉了`
友情连接:第七大陆

TOP

去睡吧睡吧..我来接班了...!!XY..安..
将欲心事付瑶筝。   知音少,弦断有谁听…

TOP

我来接班了
~我的丗界,隻有妳能領銜主演☆~

TOP

你们都下了?那我来接班吧~
友情连接:第七大陆

TOP

我来接班了
~我的丗界,隻有妳能領銜主演☆~

TOP

你们都下了?我来接班~..
友情连接:第七大陆

TOP

我来接班了
~我的丗界,隻有妳能領銜主演☆~

TOP

嘿嘿``...偶还没下呢..不用你接班`~
友情连接:第七大陆

TOP

 22 12
发新话题