Quantcast
Channel: C++博客-所有随笔
Viewing all articles
Browse latest Browse all 7882

WP程序完全禁止垃圾评论方法

$
0
0
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');   


老何 2014-04-30 10:49 发表评论

Viewing all articles
Browse latest Browse all 7882

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>