PHP 之使用HTMLPurifier过滤XSS

一、HTMLPurifier下载

http://htmlpurifier.org/

二、cleanXSS函数封装

复制代码
function cleanXSS($content)
{
    require_once 'xss/htmlpurifier/library/HTMLPurifier.auto.php';
    
    $config = HTMLPurifier_Config::createDefault();
    
     // 允许的html标签
    // $config->set('HTML.Allowed', 'img[src|style],a[href]');
    //设置允许的属性
    // $config->set('HTML.AllowedAttributes', array('style' => true, 'src' => true));
    //允许特定的CSS属性
    // $config->set('CSS.AllowedProperties', 'width,height');
    //禁止css类名
    // $config->set('Attr.ForbiddenClasses', 'test, aa');

    $purifier = new HTMLPurifier($config);
    $clean_html = $purifier->purify($content);
    return $clean_html;
}

三、简单示例

过滤前

复制代码
<img class="aa" src="https://www.test.com/api/avatar/default.jpg?v=1754031794" style="width:100px;" onerror="alert(1)"/><a href="http://www.baidu.com" class="test" onclick="alert('xss')">123</a>

过滤后

复制代码
<img class="aa" src="https://www.test.com/api/avatar/default.jpg?v=1754031794" style="width:100px;" alt="default.jpg?v=1754031794" /><a href="http://www.baidu.com" class="test">123</a>
相关推荐
剪刀石头布啊23 分钟前
vue-react为何要虚拟dom
前端
剪刀石头布啊25 分钟前
ahooks常用的一些库,我们使用一下
前端
剪刀石头布啊27 分钟前
从git更新本地提交记录到更新已经推送到远端记录
前端
Flynt3 小时前
axios 被投毒半年后,我把 npm 的"安全防线"实测了一遍:最信任的 SHA512 是安慰剂
前端·npm·node.js
excel3 小时前
Base62 和 Base64 有什么区别?
前端
风骏时光牛马4 小时前
大模型底层架构与AI源码深度剖析
前端
掘金挖土5 小时前
前端手摸手跑路之 AI 应用开发(九)
前端·后端
中文呀8 小时前
三维 GIS 离线缓存实战:逆向 CesiumOfflineCache,并亲手为它补上"自动更新"能力
前端
前进前进前进8 小时前
TRAE 全链路实战:做了一个警示牌一键生成器:纯 Canvas、单文件、零依赖
前端