WordPress的垃圾评论并不一定是某人到了你的网站发的,XML-RPC很可能(不敢说绝对了)就是罪魁祸首,本文说下如何完全禁止它了。
tenpay12
Disable WordPress XML-RPC
What is XML-RPC
XML-RPC=Remote Procedure Call (RPC),是一个远程调用协议,XML编码,PHP响应。简单地说,使用铝合金气动隔膜泵XML-RPC 可以远程做些什么事儿,例如:发布文章(广义的文章,包括垃圾评论)、查看评论之类的。
Wodpress中的XML-RPC是如何工作的
WordPress3.5+默认是开启XML-RPC的,Wordpress官方团队是这么说的:
XML-RPC functionality is turned on by default since WordPress 3.5.
In previous versions of WordPress, XML-RPC was user enabled. To enable, go to Settings > Writing > Remote Publishing and check the checkbox.
但是,如果你按照它的说明去找的话,是找不到铝合金气动隔膜泵这个关闭选项的:
Wodpress中的XML-RPC
Wodpress中的XML-RPC
并且,更可怕的是Wordpress的XML-RPC还有自己的API:XML-RPC WordPress API ,这个API允许远程获取/读取/发布各种类型的文章(还是广义的,包括垃圾评论)。
如何禁用Wordpress中的XML-RPC
你看到这篇文章的原因有可能是你遭遇了大量的垃圾评论了,是吗?如果是的话,我只能告诉你:完全禁用Wordpress的这一机制,不失为防止垃圾评论的一个好办法。
请先移步至:http://redbot.org ,在输入栏中输入你高贵的网址,然后轻轻的点下回车键,看看你会不会看到:
X-Pingback: http://你的网址/xmlrpc.php
如果看到了,那么请继续往下看!
先手动关了你的Wordpress的XML-RPC:
add_filter( 'xmlrpc_enabled', '__return_false' );
再隐藏你的网页的头部输出:
/*
Hide my xml-rpc.
*/
function cwp_remove_x_pingback( $headers ){
unset( $headers['X-Pingback'] );
return $headers;
}
add_filter( 'wp_headers', 'cwp_remove_x_pingback' );
好了,现在发送垃圾评论的“机器人”(计算机+软件+人)看不到你的xmlrpc.php 了,但是这个文件的物理地址还是存在的,TA会猜到这个链接的,那就要用某种方法禁止这个文件被读取了(禁止?转向?):
禁止读取xmlrpc.php
假如你用的是apache主机,在你的网站根目录下的.htaccess文件中加入:
<IfModule mod_alias.c>
RedirectMatch 403 /xmlrpc.php
</IfModule>
读取这个文件的时候就返回403,这是一个HTTP协议的状态代码,意思是禁止访问。
读取xmlrpc.php的时候转向
<IfModule mod_alias.c>
Redirect 301 /xmlrpc.php http://baidu.com/
</IfModule>
当尝试读取这个文件的时候就转向百度或者其它什么的(比如127.0.0.1)。
以上是针对apache主机的,如果你采用的nginx主机,你可以这样:
server {
# stuff
location = /xmlrpc.php {
deny all;
}
}
如果你使用的是IIS,IIS?无可奉告了就!
防止垃圾评论的其它方法
1.在mysql执行下面的句子:
update posts set ping_status = 'closed';
2.让评论中的链接不可点击,这算是亡羊补牢的做法
remove_filter('comment_text', 'make_clickable', 9);
3.不接受来路不明的评论
//Block Referal URL exploit for Comments
function cwp_verify_comment_referer() {
if (!wp_get_referer()) {
wp_die( __('You cannot post comment at this time, may be you need to enable referrers in your browser.','cwp') );
}
}
add_action('check_comment_flood', 'cwp_verify_comment_referer');
4.移除评论者的链接,这也算是亡羊补牢的做法
//Remove the url field from your comment form
function remove_comment_fields($fields) {
unset($fields['url']);http://www.jscz.gov.cn/
return $fields;
}
add_filter('comment_form_default_fields','remove_comment_fields');
5.以比较“软”的方法防止pingback
function cwp_unset_pingback( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
}
add_filter( 'xmlrpc_methods', 'cwp_unset_pingback');
tenpay12
Disable WordPress XML-RPC
What is XML-RPC
XML-RPC=Remote Procedure Call (RPC),是一个远程调用协议,XML编码,PHP响应。简单地说,使用铝合金气动隔膜泵XML-RPC 可以远程做些什么事儿,例如:发布文章(广义的文章,包括垃圾评论)、查看评论之类的。
Wodpress中的XML-RPC是如何工作的
WordPress3.5+默认是开启XML-RPC的,Wordpress官方团队是这么说的:
XML-RPC functionality is turned on by default since WordPress 3.5.
In previous versions of WordPress, XML-RPC was user enabled. To enable, go to Settings > Writing > Remote Publishing and check the checkbox.
但是,如果你按照它的说明去找的话,是找不到铝合金气动隔膜泵这个关闭选项的:
Wodpress中的XML-RPC
Wodpress中的XML-RPC
并且,更可怕的是Wordpress的XML-RPC还有自己的API:XML-RPC WordPress API ,这个API允许远程获取/读取/发布各种类型的文章(还是广义的,包括垃圾评论)。
如何禁用Wordpress中的XML-RPC
你看到这篇文章的原因有可能是你遭遇了大量的垃圾评论了,是吗?如果是的话,我只能告诉你:完全禁用Wordpress的这一机制,不失为防止垃圾评论的一个好办法。
请先移步至:http://redbot.org ,在输入栏中输入你高贵的网址,然后轻轻的点下回车键,看看你会不会看到:
X-Pingback: http://你的网址/xmlrpc.php
如果看到了,那么请继续往下看!
先手动关了你的Wordpress的XML-RPC:
add_filter( 'xmlrpc_enabled', '__return_false' );
再隐藏你的网页的头部输出:
/*
Hide my xml-rpc.
*/
function cwp_remove_x_pingback( $headers ){
unset( $headers['X-Pingback'] );
return $headers;
}
add_filter( 'wp_headers', 'cwp_remove_x_pingback' );
好了,现在发送垃圾评论的“机器人”(计算机+软件+人)看不到你的xmlrpc.php 了,但是这个文件的物理地址还是存在的,TA会猜到这个链接的,那就要用某种方法禁止这个文件被读取了(禁止?转向?):
禁止读取xmlrpc.php
假如你用的是apache主机,在你的网站根目录下的.htaccess文件中加入:
<IfModule mod_alias.c>
RedirectMatch 403 /xmlrpc.php
</IfModule>
读取这个文件的时候就返回403,这是一个HTTP协议的状态代码,意思是禁止访问。
读取xmlrpc.php的时候转向
<IfModule mod_alias.c>
Redirect 301 /xmlrpc.php http://baidu.com/
</IfModule>
当尝试读取这个文件的时候就转向百度或者其它什么的(比如127.0.0.1)。
以上是针对apache主机的,如果你采用的nginx主机,你可以这样:
server {
# stuff
location = /xmlrpc.php {
deny all;
}
}
如果你使用的是IIS,IIS?无可奉告了就!
防止垃圾评论的其它方法
1.在mysql执行下面的句子:
update posts set ping_status = 'closed';
2.让评论中的链接不可点击,这算是亡羊补牢的做法
remove_filter('comment_text', 'make_clickable', 9);
3.不接受来路不明的评论
//Block Referal URL exploit for Comments
function cwp_verify_comment_referer() {
if (!wp_get_referer()) {
wp_die( __('You cannot post comment at this time, may be you need to enable referrers in your browser.','cwp') );
}
}
add_action('check_comment_flood', 'cwp_verify_comment_referer');
4.移除评论者的链接,这也算是亡羊补牢的做法
//Remove the url field from your comment form
function remove_comment_fields($fields) {
unset($fields['url']);http://www.jscz.gov.cn/
return $fields;
}
add_filter('comment_form_default_fields','remove_comment_fields');
5.以比较“软”的方法防止pingback
function cwp_unset_pingback( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
}
add_filter( 'xmlrpc_methods', 'cwp_unset_pingback');