关于如何屏蔽垃圾留言的一点探索

本文探讨了网站防范垃圾留言的方法,包括动态更改表单元素名称、使用隐藏字段验证及结合cookie的有效时间限制等手段,旨在提高留言系统的安全性。

自己做了一个小站,访客不多,却渐渐招来了越来越多的垃圾留言。打算处理之。删除容易,关键是如何避免。

因为自己前段时间做过发贴器,知道批量发表留言的关键是要知道如何提交数据,也就是说,要把留言提交给正确的网页元素。

如果网页元素的名字是可变的,那么发贴机就无可奈何了。(当然,手工发表是无论如何也避不开的)

那么,怎么变呢?

首先想到的是每天变一个名字,比如元素名是content1,输入区形如:

  <TEXTAREA NAME="content1" ROWS="" COLS=""></TEXTAREA>

那么,每天变名字的可能性就是content1_<当天日期>。后台处理同样。这样发贴器无法动态改变元素名,于是就成功规避。但有个问题,假设某人23:59开始写留言,0:0之后才提交,那么前后台就会面临元素名不一致的情况,就会丢失数据。显然不可行。

第二个想法是,给网页中增加一个hidden的元素extendid1,它的值是一个随机数(如35),同时content1的名字也成为content1_35,当留言提交给后台时,先提取extentid1的值,然后就知道本次content1的真正名字是什么了。

这样子虽然每次的留言页面中,content1的元素名都会随机变化,但如果spammer们使用伪造数据包的方法,只替换content1_xx元素的正文内容,我后台一样无法判断是否合法渠道提交。

--------

似乎陷入了僵局。不过,既然如此,说明其实要想完全避开垃圾留言是不太可能的(最BT的垃圾们会手工发贴,那样我们就没有任何办法了)。回想起google baidu等大网站在用户发贴时一样会出现验证码,也间接证明了这一点。

看了一本电子书《15天学会JQuery》,中间有一节提到如何保护你的form不易被侵扰,它的论据是:“Spammer们总是会拿软杮子捏,浪费时间去解决一个狡猾的对手对他们来说就是浪费金钱。”而所提供的解决方法也是在form里放一个隐藏标签,该标签与cookie的某个信息相一致,隐藏标签的有效时间还未过期。换句话说,你的访客们只有在一段有限的时间内才可以填写窗体并进行发送。

这个办法比我的要巧妙多了。因为他利用的是cookie。下一步就是实现它了。相关考虑暂时告一段落。

转载于:https://www.cnblogs.com/anjo/archive/2011/03/13/1957425.html

WordPress屏蔽国外垃圾留言评论,将文件里的代码放到当前主题的 functions.php 中; 的前面就可以了。代码参考:https://boke112.com/bkwd/4209.html 和https://loomob.com/57.html 将以下代码放到当前主题的 functions.php 文件最后一个 ?> 的前面: //防国外灌水 function scp_comment_post( $incoming_comment ) { // 禁止全英文评论 $pattern = '/[x7f-xff]/'; if(!preg_match($pattern, $incoming_comment['comment_content'])) { wp_die( "您的评论中必须包含汉字! <br /> You should type some Chinese word (like "你好") in your comment to pass the spam-check, thanks for your patience! " ); } //禁止 A 链接 if(strstr($incoming_comment['comment_content'], "<a")){ wp_die( "您的评论中不能有 A 链接,请直接填写 URL 地址" ); } // 判断 中文字符占比 $len_all = strlen($incoming_comment['comment_content']); $len_st = mb_strlen($incoming_comment['comment_content'], 'UTF-8'); if(($len_all-$len_st)/(2*$len_st) < 0.5){ wp_die( "中文字符少于百分之五十" ); } return( $incoming_comment ); } add_filter('preprocess_comment', 'scp_comment_post'); //屏蔽关键词,email,url,ip function Shield_fuckspam($comment) { if (wp_blacklist_check($comment['comment_author'], $comment['comment_author_email'], $comment['comment_author_url'], $comment['comment_content'], $comment['comment_author_IP'], $comment['comment_agent'])) { header("Content-type: text/html; charset=utf-8"); err(__('不好意思,您的评论违反画里网站评论规则')); } else { return $comment; } } add_filter('preprocess_comment', 'Shield_fuckspam'); //过滤外文评论 function refused_spam_comments($comment_data) { $pattern = '/[一-龥]/u'; $jpattern = '/[ぁ-ん]+|[ァ-ヴ]+/u'; if (!preg_match($pattern, $comment_data['comment_content'])) { err(__('来一波汉字吧,博主只认识汉字!You should type some Chinese word!')); } if (preg_match($jpattern, $comment_data['comment_content'])) { err(__('原谅博主吧,只听得懂岛国神片的一两句雅蠛蝶 Japanese Get out!日本语出て行け! You should type some Chinese word!')); } return ($comment_data); } add_filter('preprocess_comment', 'refused_spam_comments'); //屏蔽带连接的 function Shield_link($comment_data) { $links = '/http:\/\/|https:\/\/|www\./u'; if (preg_match($links, $comment_data['comment_author']) || preg_match($links, $comment_data['comment_content'])) { err(__('别啊,昵称和评论里面添加链接会怀孕的哟!!')); } return ($comment_data); } add_filter('preprocess_comment', 'Shield_link');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值