禁止国外外网IP访问wordpress 防止扫描及攻击

你是否频繁收到攻击邮件,扫描用户名及密码?恶意采集?那么看看本教程,会给你带来一些帮助。

频繁收到外网IP攻击,试图使用插件BAN,但是效果不佳,老外使用的是J万个IP,怎么能一一禁止ban,所以只能全封外国IP,无奈之举,也是为了云网络的安全。

禁止外网访问PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
* WordPress 显示评论者IP归属地PHP函数
**/

function aliuyun_getRealIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}

function aliuyun_locate($ip) {
$ip=aliuyun_getRealIp();
if(empty($ip)) $ip = get_comment_author_IP();
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
$result = json_decode($file_contents,true);
if ($result['data']['country'] != '中国') {
wp_redirect( '禁止访问' );
} else {
echo '<!-- 运营商是'.$result['data']['isp'].',IP是'.$ip.',禁止一切外国佬访问!别问我为什么!因为钓鱼岛是中国的! -->';
}
}
add_action( 'wp_footer', 'aliuyun_locate' );

 

你只需将以上代码加入到主题中的function.php即可。刷新页面试试效果,如果主题中出现那么恭喜你,禁封老外成功了!!