自升级wordpress3.0以后,一切风调雨顺,自上周起,被洋鬼子的广告肉机盯上了,平均每三五分钟一条广告,评论内容大致相同,评论ip来自五湖四海,各不相同。
虽然说akismet是wordpress中antispam无二的选择,但是akismet那个验证码让人很纠结,于是只能自己山寨一把了。
土办法步骤一 转发默认评论地址
常见的洋鬼子的广告肉机,都是利用了wordpress公开的post地址来做到脚本灌入的,其默认地址是wp-comments-post.php,第一步要做的是,屏蔽这个地址(以nginx为例):
rewrite ^/wp\-comments\-post\.php$ http://www.54chen.com/ last;
土办法步骤二 伪造假地址
既然第一步中的真实地址无法访问了,那第二步肯定是假冒出来可以访问的地址:
if (!-e $request_filename){
rewrite ^/wc([0-9]+)\.html$ /wp-comments-post.php?54chen=$1 last;
}
土办法步骤三 javascript制造假post
完成上面两步之后 ,最后一步就是将原来的comments.php修改post action的地址为伪造的地址,为了更加有效果,使用js来产生随机的wc1234.html即可:
在评论的form中增加onsubmit="chenAntiSpam()" name="commentform";
再增加js:
<script type="text/javascript">
function chenAntiSpam() {
var param ='wc'+Math.round(Math.random()*1000)+'.html';
document.commentform.action = 'http://www.54chen.com/'+param;
}
</script>
大功告成,有效防住了洋鬼子的灌。
原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]
本文链接: http://www.54chen.com/php-tech/easy-method-to-antispam-wordpress.html
学习了,
哥也有类似的经历,不过在纠结了一段时间后,就不理我了
经过哥的上述折腾后,已经有效把洋鬼子挡在门外
陈大威武, 哥学习之.
忧郁哥,早
akismet验证码?你是说akismet那个API KEY吗?直接到wordpress.com上注册一个帐号就有了呀
就是那个了,注册是十分不爽的做法,所以就自己动手丰衣足食了
还是觉得加验证码才是防止机器的最好方法·
不过我这个办法很适用,现在一条也进不来了,除非纯人肉的
用中文验证码怎么样?? 哈哈
输入验证码的操作都是增加用户输入成本的事情不是太好
Apache的规则怎么写呢?谢谢。