阻止恶意链接

0条评论

禁止恶意评论者看起来是非常严厉的行为,但在禁止恶意评论者灌水的同时仍允许评论发表的方法也是有的。

大多数的恶意评论发布者使用随机IP地址。封掉他们的IP地址在一定程度上能阻止恶意链接,但同时也使得封掉合法用户的几率上升了

封恶意评论者的IP

当评论发送至你的博客时,IP地址就会包括在数据包中并随着该评论发布到因特网上。你可以把IP地址看作是电话号码,而WordPress评论审核管理就像是来电显示,你可以知道评论来自何处。

恶意评论者的IP劫持手段早已恶名昭彰了,因此附带恶意链接的IP地址实际上是从某个合法的因特网连接设备上窃取的。

如果你仔细观察IP地址,你会注意到数字上仅存微小差异。如:

  • 192.168.0.1
  • 192.168.0.2
  • 192.168.0.3

以及其他相继的或相似的数字排序。你可以通过制定1段或多段IP数字来向恶意评论语列表添加更简单的IP地址,如192.168 -- 这样任何以192.168开头的IP地址将被看作恶意IP。这样一来你就不用劳神输入这么多段数字了。请注意通配符IP数字的使用范围,因为比如你只使用192.的话,就会将合法IP地址也拒之门外。

.htaccess文件 - 它也能控制永久链接 - 可被用来某个IP地址完全阻止住,甚至无法在你网站上看到它。你可以将它放入网站root或博客所在目录之下。

以下为.htaccess文件位于网站root目录下的例子

order allow,deny
deny from 123.123.123.123
deny from 456.456.456.*
deny from 789.789.*.*
allow from all
禁止123.123.123.123 
仅禁止该IP
禁止456.456.456.* 
禁止所有以456.456.456开头的IP地址用户
禁止789.789.*.* 
禁止所有以789.789开头的IP地址用户。

因此能够阻止256*256个IP地址

如果你开始阻止IP地址,被阻止的访问者就能看到一个403错误页面。请确保在该页面上留下你的详细联系方式。你可以询问托管商定制403页面内容的方法(也可以看后文)。

如果你使用*通配符来阻止IP地址的话,至少留下你的联系方式,以防“错斩贤臣”。

如果你想确认确实能够进行IP阻止的话,可以拿朋友的IP地址来做实验,不过你得先告诉他们你正在做测试。

禁止No Referrer请求

当访客进行评论时,wp-comments-post.php文件就会被访问,完成其工作并创建日志。用户的浏览器则会发送一个有关于此的"referral"行。

spam-bot进入时,它会直接点击文件且不会留下一个referrer。这允许直接来自服务器的某些巧妙检测和动作。如果你对Apache指令不太熟悉的话,可以在根目录.htaccess 文件中写入如下内容::

RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

这将:

  1. 检测日志创建时间
  2. 检测日志是否在wp-comments-post.php上
  3. 检查referrer是否在你的domain中或是不存在referrer
  4. 将spam-bot 送回生成它的服务器IP地址处。
注1: 在第四行中,将yourdomain.com修改为domain.xxx,不要带上www或其他前缀。
注2: 某些用户的浏览器可能无法发送referral,但这是非常罕见的。

将spam-bot偏返是有必要的。

技巧:如果你希望这样而且也知道根目录的路径,可以如此:

RewriteEngine On
RewriteLog /absolute/path/to/your/wwwroot/public_html/rewrite_log.txt
RewriteLogLevel 2

当激活了RewriteRule,你就会在rewrite_log.txt中得到类似如下的内容:

65.197.28.xxx- - [06/Feb/2005:10:59:34 --0500] [yourdomain.com/sid#80054890][rid#804b6a50/initial] (2) 
init rewrite engine with requested uri /wp-comments-post.php
65.197.28.xxx- - [06/Feb/2005:10:59:34 --0500] [yourdomain.com/sid#80054890][rid#804b6a50/initial] (2) 
rewrite /press/wp-comments-post.php -> http://65.197.28.xxx/
65.197.28.xxx- - [06/Feb/2005:10:59:34 --0500] [yourdomain.com/sid#80054890][rid#804b6a50/initial] (2) 
explicitly forcing redirect with http://65.197.28.170/
65.197.28.xxx- - [06/Feb/2005:10:59:34 --0500] [yourdomain.com/sid#80054890][rid#804b6a50/initial] (1) 
escaping http://65.197.28.xxx/ for redirect
65.197.28.xxx- - [06/Feb/2005:10:59:34 --0500] [yourdomain.com/sid#80054890][rid#804b6a50/initial] (1) 
redirect to http://65.197.28.xxx/ [REDIRECT/301]
取自真实的日志

注:阻止IP地址很简单,对利用受感染的机器来散布恶意链接却束手无策,原因有二:1. 机器原主人仍访问该机器,通常是无辜的不应被阻止的用户。2. 此类机器的数量之大并不是按IP地址进行阻止就能应付得了的。