html filter 属性,White HTML Filter

本文介绍了一种针对富文本编辑器XSS攻击的防护工具WhiteHTMLFilter,它利用DOMDocument解析HTML并采用白名单策略,提供iframe属性过滤功能。通过实例展示了如何配置和使用此库,确保在满足业务需求的同时增强网站安全性。
摘要由CSDN通过智能技术生成

软件简介

White HTML Filter

简介

XSS是什么就不介绍了,很多时候因为老板的需求之类的,必须用到UEditor之类的HTML富文本编辑器,这时候XSS防御就很重要了。

很多人会选择用strip_tags()之类的来去除HTML标记,但是去除了标签,还有onclick之类的危险属性。而且过滤了属性,对于必须通过iframe插入HTML5视频的情况,还要过滤属性的值。

一个常见做法是用正则表达式来切分HTML字符串,然后得到多个多维数组,利用黑名单过滤完后再拼接回HTML,这种方法因为解析HTML的方式跟浏览器不同,所以很容易被绕过。

这款工具应运而生,使用基于与浏览器解析HTML方式一致的标记化算法(The Tokenization

Algorithm)的DOMDocument来解析HTML,然后利用白名单来过滤HTML标签、属性、乃至属性值。

使用方法

1、引入

composer require lincanbin/white-html-filter

2、使用

use lincanbin\WhiteHTMLFilter;

//跨站脚本白名单过滤

function XssEscape($html)

{

$filter = new WhiteHTMLFilter();

$urlFilter = function($url) {

$token = parse_url($url);

if (empty($token['scheme']) || in_array($token['scheme'], array('http', 'https')) === false) {

return '';

}

$hostWhiteList = array(

'www.youtube.com', 'youtube.com', 'www.youtu.be', 'youtu.be',

'player.youku.com', 'v.youku.com',

'video.tudou.com', 'www.tudou.com',

'player.video.qiyi.com', 'open.iqiyi.com',

'imgcache.qq.com', 'v.qq.com',

'static.hdslb.com',

//'www.le.com',

'share.vrs.sohu.com', 'tv.sohu.com',

'player.pptv.com',

'cdn.aixifan.com',

'v.ifeng.com',

'video.sina.com.cn',

'galaxy.bjcathay.com'//CNTV

);

if (empty($token['host']) || in_array($token['host'], $hostWhiteList) === false) {

return '';

}

return $url;

};

$iframeRule = array(

'iframe' => array(

'src' => $urlFilter,

'width',

'height',

'frameborder',

'allowfullscreen'

)

);

$filter->config->modifyTagWhiteList($iframeRule);

$filter->loadHTML($html);

$filter->clean();

return $filter->outputHtml();

}

以上这段代码表示在默认白名单列表后追加配置,允许iframe标签的使用,只允许iframe的src、width、height、frameborder、allowfullscreen属性。

并对src的属性值进行过滤,使得当iframe的src属性值的URL的域属于以上域名列表中的其中之一时,才允许该值出现,否则令src属性值为空。

更多示例

你可以在这里使用GitHub帐号登录 https://www.94cb.com/t/5280 ,并这个帖子下面回帖对这个库进行测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值