过滤XSS的HTMLPurifier使用

什么是HTMLPurifier?

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

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

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

默认使用方法

<?php
require_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',

最终效果:

 


作者:0x584A
链接:https://www.jianshu.com/p/bf8a816fde47
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值