首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTMLPurifier条选择标签

HTMLPurifier条选择标签
EN

Stack Overflow用户
提问于 2019-07-08 08:37:59
回答 1查看 201关注 0票数 0

我正在使用HTMLPurifier来防止xss。html包含所有类型的标记,例如SELECT,选项。但是HTMLPurifier删除SELECT、选项标记并保留纯文本。如何允许选择,选项标签。

这是代码

代码语言:javascript
复制
$html = "<select>
       <option value="1" selected>Test 1</option>
       <option value="2" selected>Test 2</option>
</select>";

$config = \HTMLPurifier_Config::createDefault();
$config->set( 'AutoFormat.RemoveEmpty', true );
$purifier = new \HTMLPurifier( $config );
$cleanHtml = $purifier->purify( $dirtyHTML );

代码返回“测试1测试2”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 21:44:46

<select><option>是表单元素。由于表单可以使钓鱼变得琐碎,所以HTML净化器以其“默认安全”的心态,甚至不费心地加载表单的HTML定义,所以您不能仅仅通过(仅)设置HTML.AllowedElements来启用表单。

但是,设置HTML.Trusted允许您启用表单,但可以完全启用它们。关于改变行为的一些讨论,见线程“任何人都有允许表单元素的配置吗?”HTML净化器论坛,例如:

表单只允许有一个空的操作;它们总是提交给自己。在默认情况下不是这样:您必须对其进行编码。 我将如何启用它?可能最简单的方法就是复制粘贴HTMLPurifier/HTMLModule/Forms.php中的定义,然后根据需要对它们进行调整。请注意,这些定义假定用户是受信任的,因此请仔细检查所有允许的字段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56931159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档