时间:2024-03-31
我是一个拥有多年CMS系统开发经验的程序员,对于网站安全和防范垃圾评论等问题有深刻认识和理解。今天,我想和大家分享一种简单高效的方法,来解决CMS系统中的反垃圾评论问题。
wp_create_nonce是WordPress跟据“当前时间、$action参数、和当前用户id”生成随机字符串的函数,提交表单时,WordPress会对这个随机字符串进行验证,如果提交的字符串相同,则证明本次提交是合法的提交。因此,我们可以添加一个名为comment_nonce的随机字符串到评论表单中。
代码如下:
<?php add_action('comment_form_top', function(){ global $post; $nonce = wp_create_nonce( $post->ID );//生成nonce echo '<input type="hidden" name="comment_nonce" value="'.$nonce.'" />'; }); ?>
大部分垃圾评论都是通过软件模拟提交评论产生的。垃圾评论软件通过模拟WordPress的评论数据(也就是昵称、邮箱、网址、评论这些数据),提交到WordPress。因为是软件操作的,提交评论的效率非常高,往往每分钟能达到成百上千条。
垃圾评论软件提交的评论数据都是实现准备好的,其他的数据都可以事先写好。但是,comment_nonce这个数据是随机生成的数据,是没办法事先写好的。处理评论提交的时候,我们验证这个随机数据就可以了,如果验证通过,说明是正常的评论,否则就可以认为是垃圾评论,直接丢掉提交过来的评论数据就可以了。
代码如下:
<?php add_action('preprocess_comment', function($commentdata){ $comment_post_ID = $commentdata['comment_post_ID']; $comment_content = $commentdata['comment_content']; //检查comment_nonce $nonce = $_POST['comment_nonce']; if(!isset($_POST['comment_nonce']) || !wp_verify_nonce($nonce, $comment_post_ID)){ wp_die('You are robot?'); } $comment_content = strip_tags($comment_content);//过滤html标签 return $commentdata; }); ?>
本功能使用了wp_create_nonce和wp_verify_nonce这两个WordPress函数,除了评论,你还可以在其他需要提交表单的地方使用这个方法来验证合法提交,过滤非法提交,从而保证WordPress站点的安全。
Copyright © 2019-2024 mysql.hk