如何在HTML Purifier过滤规则中允许CSS 配置代码应放在哪个文件
配置放置位置说明
你不需要修改HTML Purifier的源码文件,所有配置代码都写在你自己项目中调用HTML Purifier执行过滤的业务代码位置即可。如果多个位置需要复用配置,可以单独封装为公共配置文件。
完整可运行演示代码
<?php // 引入依赖:composer安装方式引入自动加载 require_once 'vendor/autoload.php'; // 手动下载源码引入方式替换为以下代码,修改为你实际的源码路径 // require_once '/your/path/to/HTMLPurifier.auto.php'; // 初始化默认配置对象,你的自定义配置都写在这之后 $config = HTMLPurifier_Config::createDefault(); // 自定义配置项 $config->set('Core.Encoding', 'UTF-8'); // 替换为你项目实际使用的编码 $config->set('HTML.Doctype', 'HTML 4.01 Transitional'); // 注意:原示例中CSS.Trusted配置值错误,该配置为布尔类型,设为true即可放行所有CSS,生产环境不建议开启 $config->set('CSS.Trusted', true); // 配置允许带style属性的HTML标签,需要允许哪些标签加样式就在这里补充 $config->set('HTML.Allowed','div[style],p[style],span[style]'); // 配置允许通过的CSS属性,逗号分隔,不需要开CSS.Trusted的话就在这里列需要放行的属性 $config->set('CSS.AllowedProperties', 'background-color,font-size,color'); // 用上面的配置实例化净化器 $purifier = new HTMLPurifier($config); // 执行过滤示例 $userSubmittedHtml = '<div style="background-color: #ffe;color: #f00;">用户提交的带样式内容</div>'; $safeHtml = $purifier->purify($userSubmittedHtml); // 测试输出过滤后结果 echo $safeHtml; ?>
CSS放行配置要点
- 要允许对应HTML标签携带样式,必须先在
HTML.Allowed配置中为对应标签加上[style]属性声明 - 生产环境建议关闭
CSS.Trusted,在CSS.AllowedProperties中逐个添加需要放行的CSS属性,避免恶意样式注入 - 配置可单独抽离为公共文件,比如命名为
htmlpurifier_common.php,业务代码需要过滤时直接引入该文件即可复用配置,不需要重复编写
内容的提问来源于stack exchange,提问作者Richard Vi
相关产品推荐
相关产品推荐

