本站开放注册是想让更多的同道中人一起学习进步分享所得的目的,近段时间本站遭到不明人士恶意注册,很是气人,所以本篇文章分享的是网站如何防止他人恶意攻击。
真是搞的是很烦人,本站采用的是WordPress程序,所以就想着添加一个注册时的验证,到网上搜到很多,比如使用极验的方法,但是还要注册账号什么的,比较麻烦,不太想用。
在网上搜集了以下8中比较实用的方法,有些适用于所有网站。
第一种
直接关闭注册功能。也可以在注册页面上加入验证码等功能,防止机器恶意注册。
第二种
一个纯代码实现的方法。具体如下:
把下面这段代码添加到自己的functions.php,其中的验证问题我使用了本站的域名“94wz.top”,你也可以改成其他内容。注意改的时候,代码第四行和倒数第四行都有,要改两处哦
add_action( 'register_form', 'add_security_question' );function add_security_question() { ?> <p> <label><?php _e('请输入本站域名:94wz.top') ?><br /> <input type="text" name="user_proof" id="user_proof" class="input" size="25" tabindex="20" /></label> </p> <?php } add_action( 'register_post', 'add_security_question_validate', 10, 3 );function add_security_question_validate( $sanitized_user_login, $user_email, $errors) { // 如果没有回答 if (!isset($_POST[ 'user_proof' ]) || empty($_POST[ 'user_proof' ])) { return $errors->add( 'proofempty', '<strong>错误</strong>: 您还没有回答问题。' ); // 如果答案不正确 } elseif ( strtolower( $_POST[ 'user_proof' ] ) != '94wz.top' ) { return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。' ); }}
第三种
安装Wordfence Security插件,可以在插件里面查看最近登陆的ip,以及尝试注册、登陆的ip,针对该ip(段)进行block。
第四种
更改wordpress登陆URL防止恶意注册
WP 默认的登陆URL是wp-login.php或wp-admin.php(许多spamer会根据这些footprint来收集可注册的wordpress站点,然后你的站内就多出许多垃圾评论。如果你不想成为其中的一员,那就改改登录url吧)
可以通过在 .htaccess 添加如下代码把登陆 URL 改成 login:
RewriteRule ^login$ http://94wz.top/wp-login.php [NC,L]
或者login改为自己的认为好记又不容易被识别的字符也可以哦
第五种
随机加法验证码
把以下全部代码丢进模板函数functions.php
/*-----------------------------------------------------------------------------------*/ /* WordPress注册用户随机数字验证码 /*-----------------------------------------------------------------------------------*/ # 注册用户添加验证码第一种 function loper_register_english_figures() { # 获取两个随机数, 范围0~99 $num1=rand(0,99); $num2=rand(0,99); echo "<p> <label for='math' class='small'>验证码:$num1 + $num2 = ? </label> <input id='math' type='text' name='sum' class='input' size='25'> <input type='hidden' name='num1' value='$num1'> <input type='hidden' name='num2' value='$num2'></p>"; } add_action('register_form','loper_register_english_figures'); # 判断验证码是否空白和错误 function loper_register_calculation() { $sum=$_POST['sum']; switch($sum){ case $_POST['num1']+$_POST['num2']:break; case null:wp_die( __( '错误:请填入验证码!' ), '', array( 'back_link'=>true ) );break; default:wp_die( __( '错误:验证码不正确!' ), '', array( 'back_link'=>true ) );} } add_action( 'register_post', 'loper_register_calculation');
第六种
WordPress用户注册时验证邮箱真实性实现代码
邮箱地址验证接口
请求地址:http://email.qhyt1688.com/Home/EValidation
请求方式:post
请求参数:emails=邮箱地址
返回值:包含邮箱地址验证结果的json数据。
DUX主题注册增加邮箱地址真实性验证
打开dux主题下的action文件里面的log.php文件,增加如下代码:
function SendPost_email($FullHttpUrl, $Req, $isHttps) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $Req); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_URL, $FullHttpUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if ($isHttps === true) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } $result = curl_exec($ch); return $result; }
这是一个PHP发送post的方法,有三个参数,第一个是请求地址,第二个是请求参数,第三个是是否是https请求,由于接口是http,所以我们这里写fasle即可。
继续在log.php的第83行后,也就是邮箱格式验证后面写上如下代码,进行邮箱地址真实性验证。
$res=SendPost_email('http://email.qhyt1688.com/Home/EValidation','emails='.$ui['email'],false); $stat=json_decode($res)->r[0]->emailSate; if($stat!=1){ print_r(json_encode(array('error'=>1, 'msg'=>'邮箱不存在!'))); exit(); }
返回json有3个状态,0是邮箱地址不存在,1是邮箱地址存在,2是不支持的邮箱地址。
到此邮箱地址真实性检查结束,正确率比较高。SendPost_email方法也可以放在functions.php中,因为dux的log.php接口文件中引入了wp核心,可以直接使用functions.php与WordPress提供的函数。
第七种
封锁某个ip访问(本方法适用于所有网站)
创建.htaccess文件,然后写上限制代码
Order Allow,Deny ##拒绝开关,allow表示拒绝访问
allow from all
#以下IP不能通行
Deny from 222.186.23.24
举例代码,可设置禁止多个ip
<IfModule mod_rewrite.c> Order Allow,Deny Allow from all Deny from 122.112.158.56 123.101.182.183 </IfModule>
还可设置禁止ip段
Order Allow,Deny Allow from all Deny from 192.168.0.0/24
保存后将此文件上传至服务器,默认放在根目录下。
评论0