Home > Tech > Wordpress > 阻止直接POST的垃圾评论

阻止直接POST的垃圾评论

Add a comment July 24th, 2009 http://s.ibron.co/jrhOjs

上一篇我讲了如何利用隐藏输入框来组织垃圾评论,今天登陆后台,居然还是发现了一篇垃圾评论~ :!: 这是怎么回事?莫非是我的隐藏输入框不起作用了?不应该啊~本地测试都是没问题的。人肉Spam?更加不可能了,哪个foreigner会找到这个没什么人气小站来投放ad啊…

一时半会想不出原因,遂搁置一边,去cPanel转转。在看Last Visitor的时候,忽然发现了如下数据:(因为这件事出现在大约3天之前,Last Visitors的数据已经刷新,下面的截图是Raw Access Log中的数据)imageSpamRobot Access Log对比一下IP,跟spam的一模一样!可以看到,这个Robot先访问到了主页面,之后随机挑选了一篇日志,获得相关数据后直接POST,第三行POST返回代码是302,这是wp-comments-post.php返回的Location,最后它验证了一下,开闪。原来SpamRobot是直接使用POST方法向wp-comments-post.php提交数据的。这帮家伙!

知道了原因,接下来就要想想如何来防止了。如果你是按照上篇的说明修改了自己的主题的话,恭喜你!解决的办法很简单。只要在主题的function.php中加入如下代码就OK啦!

1
2
3
4
5
6
7
function spam_check($comment)
{
	session_start();//开启session
	if(empty($_SESSION['SS_1_ID'])){die("Spam Comment!");}//不存在session值,垃圾评论,结束后续操作
	return $comment;//否则返回评论数据,继续后续步骤
}
add_filter('preprocess_comment', 'spam_check', 1);

如果你使用了Akismet插件,建议修改一下插件代码。以2.2.6版本为例,修改第500行:

add_action('preprocess_comment', 'akismet_auto_check_comment', 1);

把其中的”1″改大一点,比如”5″。这样可以防止产生”潜在”的冲突(我尝试过不修改,似乎也工作正常,但我不能保证)。

主要的思想就是利用session。还记得我在上一篇中的三个随机生成的Session值吗?在处理评论的时候,相关函数会对session进行验证。这里我们可以直接检查是否存在之前生成的随机session值(我这里用的是”SS_1_ID”)。一般的SpamRobot都是直接发送数据,不会保存Cookie。这样在对应于SpamRobot的session中就不存在”SS_1_ID”。

如果你没有使用我的方法改造自己的主题,这里也有个大概的解决办法。前提还是使用session。将commenter的name后拼上某个session值,再到函数中去验证。这个办法我没有尝试,从理论上将应该是没什么问题的。尝试自己解决问题,你会发现很多的乐趣!

当然,如果某个高级的SpamRobot能保存Cookie,这个方法就失效了。怎么办呢?别忘了,咱还有Akismet啊~ ;-)

  1. July 25th, 2009 at 22:20 | #1
    Reply Quote

    AD是无处不在的…..但是我的博客用自带的插件就没什么问题了

  2. July 25th, 2009 at 22:45 | #2
    Reply Quote

    @吖Bee
    好吧,其实我是在折腾…

  3. July 26th, 2009 at 07:40 | #3
    Reply Quote

    我感觉一个Akismet不用改就很棒了 哈哈呵呵

  4. July 26th, 2009 at 10:01 | #4
    Reply Quote

    @西风
    嗯,我现在的想法就是对于一看就知道是垃圾评论的直接处理掉,不确定的再交给akismet。

  5. July 28th, 2009 at 01:05 | #5
    Reply Quote

    试试这次可以评论上么?

  6. July 29th, 2009 at 10:01 | #6
    Reply Quote

    我的博客现在好多人肉的

  7. July 29th, 2009 at 10:07 | #7
    Reply Quote

    @西门吹水
    哎~人肉的话就只能靠Akismet和Blacklist了。

  8. July 29th, 2009 at 12:14 | #8
    Reply Quote

    载入效果好帅! :roll:

  9. July 30th, 2009 at 09:12 | #9
    Reply Quote

    暂时没这方面需要,偶尔碰上个十几条spam,删也不费事。

  10. July 31st, 2009 at 23:51 | #10
    Reply Quote

    @Epile
    呵呵~主要是看大家都是把进度条放在左上角,我就想着换一下样子~

  11. August 2nd, 2009 at 13:53 | #11
    Reply Quote

    垃圾评论 很恼人。有一次,一个家伙 一天耗掉我 几百M的流量。。 :shock:

  12. August 2nd, 2009 at 13:58 | #12
    Reply Quote

    @小奥
    这种家伙直接封IP或者加到黑名单~~ :cool:

  13. August 3rd, 2009 at 11:30 | #13
    Reply Quote

    有可能把不是垃圾评论的评论给删了!

  14. August 3rd, 2009 at 23:58 | #14
    Reply Quote

    @卢松松
    嗯,有可能会把Pingback/trackback阻止。研究代码ing~~

  15. August 16th, 2009 at 14:23 | #15
    Reply Quote

    突然发现博客的文章列表只有一页~囧~

  16. August 29th, 2009 at 21:04 | #16
    Reply Quote

    N久不更新了,鄙视你……

  17. August 31st, 2009 at 20:28 | #17
    Reply Quote

    @Showfom
    实在是心有余而力不足哇~~~sigh~ :cry:

  18. September 6th, 2009 at 16:27 | #18
    Reply Quote

    恩,广告这种东西,总是上有政策下有对策

  19. September 12th, 2009 at 23:50 | #19
    Reply Quote

    都是利益惹的祸……..

  20. September 25th, 2009 at 10:55 | #20
    Reply Quote

    换地址了换地址了
    赶紧把我的链接换一下哦
    为了PR,我RP要爆发了

  21. September 27th, 2009 at 10:04 | #21
    Reply Quote

    恭喜blog开通,祝贺一下!

  22. November 19th, 2009 at 10:25 | #22
    Reply Quote

    我从嘀咕上走来,居然看到这么多熟悉的面孔~

  23. December 5th, 2009 at 13:53 | #23
    Reply Quote

    你好久没更新了

  24. December 5th, 2009 at 15:53 | #24
    Reply Quote

    @zwwooooo
    哎~一来没什么动力,二来确实忙得不行,实在没有时间静下来写东西 :cry:

  25. January 25th, 2010 at 17:39 | #25
    Reply Quote

    俺还是看不懂,习惯用插件

  26. February 24th, 2010 at 01:09 | #26
    Reply Quote

    我现在用的是typecho博客程序,用插件过滤掉了6000多条垃圾评论!

  27. March 8th, 2010 at 00:36 | #27
    Reply Quote

    国强已经转载并标注了出处 http://www.liguoqiang.com

  28. March 8th, 2010 at 00:37 | #28
    Reply Quote

    http://www.liguoqiang.info 不是上边那个.com

  29. April 4th, 2010 at 12:32 | #29
    Reply Quote

    Akismet 就已经够了。

  30. May 4th, 2011 at 21:01 | #30
    Reply Quote

    好深奥哦!!!!
    搞不定,努力学习中…

  31. October 5th, 2011 at 20:54 | #31
    Reply Quote

    Akismet还不够用啊~- -!

  1. No trackbacks yet.
Comments feed