过滤XSS的HTMLPurifier使用

admin 2022年4月1日10:32:15评论106 views字数 995阅读3分19秒阅读模式

什么是HTMLPurifier?

在php里解决XSS最简单的方法是使用htmlspecialchars转义xml实体,但对于需要使用xml的时候就搏手无策了。

HTML Purifier是基于php 5所编写的HTML过滤器,支持自定义过滤规则,还可以把不标准的HTML转换为标准的HTML,是WYSIWYG编辑器的福音。。

官方下载地址:http://htmlpurifier.org/download

默认使用方法

<?phprequire_once 'library/HTMLPurifier.includes.php'; // 载入核心文件// XSS代码$dirty_html = <<<EOF  <h1>Hello  <script>alert("world");</script>  EOF;   // 实例化 HTMLPurifier对象$purifier = new HTMLPurifier();   // 返回过滤后的数据$cleanHtml = $purifier->purify($dirty_html);   ?>

详细过滤参看官方说明:http://htmlpurifier.org/live/smoketests/xssAttacks.php

在ThinkPHP中的使用

ThinkPHP核心配置文件中使用的是: ‘DEFAULT_FILTER’ => ‘htmlspecialchars’, // 默认参数过滤方法 用于I函数…

虽然也很有效的过滤了很有恶意的SQL注入,但未过滤“’”这个单引号,设置不妥当仍然会造成SQL注入。官方也给出了回应:I函数的作用不能等同于防止SQL注入,可以自定义函数来过滤

那么我们就可以使用HTMLPurifier了。

首先自定义一个函数:

    function removeXSS($val){        static $obj = null;        if ($obj === null) {            // 载入核心文件             require_once ("/Public/HTMLPurifier/HTMLPurifier.includes.php");            $obj = new HTMLPurifier();         }        // 返回过滤后的数据         return $obj->purify($val);     }

并在配置文件中改变默认过滤参数:

‘DEFAULT_FILTER’ => ‘removeXSS’,

最终效果:

过滤XSS的HTMLPurifier使用

原文始发于微信公众号(一个人的安全笔记):过滤XSS的HTMLPurifier使用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月1日10:32:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   过滤XSS的HTMLPurifier使用http://cn-sec.com/archives/772058.html

发表评论

匿名网友 填写信息