您的当前位置:首页 > 知识博客 > wordpress建站

通过 wp_create_nonce 过滤大部分垃圾评论

时间:2024-03-31

自我介绍

我是一个拥有多年CMS系统开发经验的程序员,对于网站安全和防范垃圾评论等问题有深刻认识和理解。今天,我想和大家分享一种简单高效的方法,来解决CMS系统中的反垃圾评论问题。

什么是wp_create_nonce?

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。因为是软件操作的,提交评论的效率非常高,往往每分钟能达到成百上千条。

怎么通过wpnonce防止垃圾评论

垃圾评论软件提交的评论数据都是实现准备好的,其他的数据都可以事先写好。但是,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站点的安全。


欢迎咨询/Welcome to inquire
tel/vx:18842938855
qq:1685522781
email:1685522781@qq.com

Copyright © 2019-2024 wangzhan.shop


Whatsapp