php - 如何在使用 HTMLPurifier 去除脚本标签时允许所有 CSS?
问题描述
有没有办法让HTMLPurifier允许所有 CSS 属性,所以我可以使用它来净化 HTML 问题(例如脚本标签)并保持视觉样式不变?
解决方案
是的,如果$htmlPurifier
对应于您的 HTMLPurifier 实例配置为使用 CSS 的默认设置(即不传递任何 CSS 配置选项),您可以在运行purify
方法之前设置以下内容
$htmlPurifier->config->getCssDefinition()->info = new class implements \ArrayAccess {
public function offsetSet($offset, $value)
{
}
public function offsetExists($offset) {
return true;
}
public function offsetUnset($offset)
{
}
public function offsetGet($offset) {
return new \HTMLPurifier_AttrDef_Text();
}
}
这将覆盖 CSSDefinition.php 中设置的默认值,并在CSS.php中“欺骗”这一行以允许任何属性通过(使用 HTMLPurifier_AttrDef_Text 类似乎可以阻止它尝试进行任何进一步的验证)
推荐阅读
- ios - 将 Swift 结构转换为数据字节
- c++ - 安装 libc++ 的问题
- python - Multiply a 3D matrix with 2D matrix to give a 2D matrix
- bash - 程序如何使用 .bash_profile 添加到 $PATH 变量?
- swift - 如何在 SwiftUI 列表中重新加载数据?
- google-cloud-platform - 为什么整个 CI-CD 过程需要很长时间才能完成?
- azure - 在 docker-compose 中挂载 azure 存储帐户
- ruby - 如何重构 Ruby 方法以通过 Rubocop 测试,同时又是 DRY
- php - 使用 PHP 在 Firebase 上创建主题
- docker - 如何更新 k8s pod / Docker 容器的 /etc/services