WordPress网站被垃圾评论攻击

2018年4月10日07:28:53 8 43 views

近几日WordPress网站遭到恶意的垃圾评论攻击,评论的IP地址来源美国、德国、乌克兰等等十几个国家,垃圾评论的内容多是链接,而且每条评论的时间间隔都很有规律(基本上在30分钟/条),收到这样的恶意评论,开始采取的方法就是全部删除,但是这样并没有阻止继续收到垃圾评论。没办法,就有了下面阻止垃圾评论的过程。

附上一张被垃圾评论攻击的截图,这只是一天内收到的垃圾评论其中很少的一部分:

WordPress网站被垃圾评论攻击

 

使用WordPress自带的垃圾评论插件:Akismet

1、在WordPress后台》插件下面有一个默认的Akismet插件。

WordPress网站被垃圾评论攻击

2、启用插件然后注册,选择个人免费版,获取API秘钥,并进行简单的设置就可以了。

WordPress网站被垃圾评论攻击

 

3、设置成功后,稍等几分钟后台就可以看到详细的垃圾评论拦截统计资料。

WordPress网站被垃圾评论攻击

 

使用代码来过滤和阻止垃圾评论

方法一:过滤内容为全英文和含有日文的垃圾评论

直接将以下代码添加到主题的functions.php文件的最下面,保存即可。

  1. /* 阻止垃圾评论 */
  2. function refused_spam_comments( $comment_data ) {
  3. $pattern = '/[一-龥]/u';
  4. if(!preg_match($pattern,$comment_data['comment_content'])) {
  5. wp_die('评编辑论必须含中文!');
  6. }
  7. return$comment_data );
  8. }
  9. add_filter('preprocess_comment','refused_spam_comments');

 

方法二:willin kan的反垃圾评论代码

同样,直接将以下代码加到主题的functions.php文件的最下面,保存即可。

  1. // 垃圾评论拦截
  2. class anti_spam {
  3.     function anti_spam() {
  4.         if ( !current_user_can('level_0') ) {
  5.             add_action('template_redirect', array($this, 'w_tb'), 1);
  6.             add_action('init', array($this, 'gate'), 1);
  7.             add_action('preprocess_comment', array($this, 'sink'), 1);
  8.         }
  9.     }
  10.     function w_tb() {
  11.         if ( is_singular() ) {
  12.             ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)/textarea>#",
  13.                 "textarea$1name=$2w$3$4/textarea><textarea name=\"comment\" cols=\"100%\" rows=\"4\" style=\"display:none\"></textarea>",$input);') );
  14.         }
  15.     }
  16.     function gate() {
  17.         if ( !emptyempty($_POST['w']) && emptyempty($_POST['comment']) ) {
  18.             $_POST['comment'] = $_POST['w'];
  19.         } else {
  20.             $request = $_SERVER['REQUEST_URI'];
  21.             $referer = isset($_SERVER['HTTP_REFERER'])         ? $_SERVER['HTTP_REFERER']         : '隐瞒';
  22.             $IP      = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] . ' (透过代理)' : $_SERVER["REMOTE_ADDR"];
  23.             $way     = isset($_POST['w'])                      ? '手动操作'                       : '未经评论表格';
  24.             $spamcom = isset($_POST['comment'])                ? $_POST['comment']                : null;
  25.             $_POST['spam_confirmed'] = "请求: "$request"\n来路: "$referer"\nIP: "$IP"\n方式: "$way"\n內容: "$spamcom"\n -- 记录成功 --";
  26.         }
  27.     }
  28.     function sink( $comment ) {
  29.         if ( !emptyempty($_POST['spam_confirmed']) ) {
  30.             if ( in_array( $comment['comment_type'], array('pingback', 'trackback') ) ) return $comment;
  31.             //方法一: 直接挡掉, 將 die(); 前面两斜线刪除即可.
  32.             die();
  33.             //方法二: 标记为 spam, 留在资料库检查是否误判.
  34.             //add_filter('pre_comment_approved', create_function('', 'return "spam";'));
  35.             //$comment['comment_content'] = "[ 判断这是 Spam! ]\n". $_POST['spam_confirmed'];
  36.         }
  37.         return $comment;
  38.     }
  39. }
  40. $anti_spam = new anti_spam();

代码后面提供了两种对付垃圾评论的办法,一种是直接阻止评论,另一种是将垃圾评论放在Wordpress评论的待审核队列中,默认的是第一种,如果你想使用第二种,请给die();加上//,然后去掉“方法二”下面代码的//符号。

 

方法三:过滤内容包含任意日文字符的垃圾评论

  1. // 阻止日文垃圾评论
  2. function BYMT_comment_jp_post( $incoming_comment ) {
  3. $jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
  4. if(preg_match($jpattern$incoming_comment['comment_content'])){
  5. wp_die( "禁止有日文字符的评论 You should type some Chinese word" );
  6. }
  7. return$incoming_comment );
  8. }
  9. add_filter('preprocess_comment', 'BYMT_comment_jp_post');

 

问题出现就会有应对的方法,如果你不喜欢用插件,你可以去测试使用代码来阻止垃圾评论。通过测试来选择最适合你的阻止垃圾评论的方法,同时对你的正常评论用户不会造成太大的影响。

  • 里维斯社
  • 微信扫一扫加好友
  • weinxin
  • 里维斯社
  • QQ扫一扫加好友
  • weinxin
Liwei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:8   其中:访客  8   博主  0

    • 夏天烤洋芋 夏天烤洋芋 4

      :mrgreen: 自带的广告评论屏蔽挺好的

      • 米扑博客 米扑博客 3

        加验证码、加滑动条、加短信验证 :grin:

        • 请输入您的QQ号 请输入您的QQ号 2

          现在的评论插件太多了,不用吧可惜,用吧真是烧心

            • Liwei Liwei 7

              @请输入您的QQ号 如果没有遇到攻击,还是不用好。如果不想用插件,也可以用代码实现。

            • 懿古今 懿古今 4

              自动使用代码禁止纯外文评论之后,这种垃圾评论已经很久没看到了

              • 西枫里博客 西枫里博客 3

                都是机器人的锅,有一条完整的产业链了已经

                • 大事记 大事记 2

                  很多都是国外的垃圾评论,我琢磨这是老外也在玩博客推广,到处瞎留言,而有的可能是真实阅读者留下的,但是我们老觉得这小子发的是垃圾评论。 :grin:

                  • 小白蜀黍网赚 小白蜀黍网赚 1

                    审核可见