»

过滤、转义评论代码,防止XSS攻击

    WordPress网络安全  
web.config访问访客网络安全网站镜像WordPress插件windows主机插件cookies建站爬虫工作防盗链又拍云CDNFAQCDN浏览器wordpressIISApache缓存CDN的问题客户申请状态网站优化

XSS又叫 CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。

这种攻击方式,首当其冲的应该是评论区。有好事者喜欢在评论中添加恶意代码,攻击其他人的网站。对于PHP网站,该如何预防评论区的XSS攻击呢?可以对代码进行过滤或转义等设置。

本文综合了张戈博客文章露兜博客文章的内容,仅供参考。

 

一、过滤代码

1. 代码完全过滤掉

如果你希望去除所有评论代码标签,只留下文字内容,可以在主题functions.php文件中添加这样的代码:

  1. function ludou_code_escape( $incoming_comment ) {
  2.     $incoming_comment = strip_tags($incoming_comment);
  3.     return $incoming_comment;
  4. }
  5. add_filter( 'comment_text', 'ludou_code_escape' );
  6. add_filter( 'comment_text_rss', 'ludou_code_escape' );

 

2. 选择性代码过滤

如果你希望有选择性地去除评论代码标签:ajax 方式的评论都会用到主题下的 comment-ajax.php 文件,编辑这个文件,搜索 $comment_type = '',然后在这行后面添加以下代码:

  1. if ( '' != $comment_content ) {
  2.     / * $filter 是需要过滤的关键词,关键词之间用分隔符 | 隔开即可。 * /
  3.     $filter = '/<(iframe|script)/i';
  4.     if (preg_match($filter,$comment_content,$matches)) {
  5.         $comment_content = strip_tags($comment_content);
  6.     }
  7. }

关于strip_tags过滤函数,可以参考php的strip_tags说明文档

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

 

二、转义代码

1. 直接将代码完全转义

如果你想将评论内容中的全部评论代码转义,不让浏览器解释这部分代码,禁止其起任何作用,并且让代码直接显示在评论中,可以添加下面的代码到主题functions.php。

  1. function ludou_code_escape( $incoming_comment ) {
  2.     $incoming_comment = htmlspecialchars($incoming_comment, ENT_QUOTES);
  3.     return $incoming_comment;
  4. }
  5. add_filter( 'comment_text', 'ludou_code_escape' );
  6. add_filter( 'comment_text_rss', 'ludou_code_escape' );

 

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

2. 选择性转义

如果你想有选择地转义评论代码,可以搜索主题comment-ajax.php 文件中的 $comment_type = '',然后在这行后面添加以下代码:

  1. if ( '' != $comment_content ) {
  2.     / * $filter 是需要过滤的关键词,关键词之间用分隔符 | 隔开即可。 * /
  3.     $filter = '/<(iframe|script)/i';
  4.     if (preg_match($filter,$comment_content,$matches)) {
  5.     $comment_content = htmlspecialchars($comment_content).'<br />(<font color="red">系统提示:评论含危险内容,已被转义处理。</font>)';
  6.  }
  7. }

 

下载以上代码

密码: h96i

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2023. All Rights Reserved

时光在路上扫码阅读、分享
  • 版权声明:该文章由 时光在路上 发表,共 1634字。除非特别标注来源,否则为原创。详见《版权声明》部分。
  • 转载请注明:文章标题和文章链接 - 时光在路上 - 也可直接“复制本文链接” 或 使用右边二维码分享本文 →