禁止恶意评论者看起来是非常严厉的行为,但在禁止恶意评论者灌水的同时仍允许评论发表的方法也是有的。
大多数的恶意评论发布者使用随机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]
这将:
- 检测日志创建时间
- 检测日志是否在wp-comments-post.php上
- 检查referrer是否在你的domain中或是不存在referrer
- 将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地址进行阻止就能应付得了的。
分类:中文手册