HTML 净化器转换 & -> &
HTML Purifier convert & -> &
我在我的文本字段中使用 HTML Purifier(Yii2)。
我需要在原版中保存“&”,但净化器转换为“&”;
我不想在净化器后使用 str_replace
。
你能帮我配置一下吗?
我的配置:
['name'],
'filter',
'filter' => function($value) {
return HtmlPurifier::process($value, [
'HTML.SafeObject' => true,
'HTML.SafeEmbed' => true,
'Core.EscapeNonASCIICharacters' => true,
'Core.Encoding' => 'UTF-8'
]);
}
更新:
文本示例,我要净化的内容:"Company name & Co"
您在评论中提到您在将信息输入数据库之前要进行净化。
我建议您从架构的角度重新考虑这个,因为它有一些不足之处,例如您丢失了原始用户输入(您以后可能需要出于某种原因进行分析),一旦您想对数据执行其他操作,您的数据库就会变得不那么有用,并且您当前版本的 HTML Purifier(可能与安全相关)中的错误将不会出现冰释前嫌。您可以在 .
中查看有关 escaping/sanitising 对于上下文 的重要性的更多信息
也就是说,您的问题之前已在 HTML 净化器论坛上讨论过:Do not escape ampersand。该主题讨论了为什么难以以不同方式对待 &
并保持安全并且基本上 'recommends' 不使用 HTML 净化器,这当然不能解决您的问题。
尽管如此,如果您被迫将纯化的 HTML 存储在您的数据库中,那么该线程中的一些建议和想法可能会对您有所帮助:
Perhaps a more useful response would be: store the raw, user submitted data (without running HTML Purifier on it) in the database, and run search queries on that. However, store in the database as well a cached version of the HTML Purified version.
或者(以<
为例):
No such boolean flag exists, and it would be reasonably tricky to implement safely (you'd want to do something silly like convert literal < and friends to some unforgeable piece of text and then convert < to the literal version.)
但后者不是一个稳健的方法,前者是不必要的冗余。
我在我的文本字段中使用 HTML Purifier(Yii2)。
我需要在原版中保存“&”,但净化器转换为“&”;
我不想在净化器后使用 str_replace
。
你能帮我配置一下吗?
我的配置:
['name'],
'filter',
'filter' => function($value) {
return HtmlPurifier::process($value, [
'HTML.SafeObject' => true,
'HTML.SafeEmbed' => true,
'Core.EscapeNonASCIICharacters' => true,
'Core.Encoding' => 'UTF-8'
]);
}
更新:
文本示例,我要净化的内容:"Company name & Co"
您在评论中提到您在将信息输入数据库之前要进行净化。
我建议您从架构的角度重新考虑这个,因为它有一些不足之处,例如您丢失了原始用户输入(您以后可能需要出于某种原因进行分析),一旦您想对数据执行其他操作,您的数据库就会变得不那么有用,并且您当前版本的 HTML Purifier(可能与安全相关)中的错误将不会出现冰释前嫌。您可以在
也就是说,您的问题之前已在 HTML 净化器论坛上讨论过:Do not escape ampersand。该主题讨论了为什么难以以不同方式对待 &
并保持安全并且基本上 'recommends' 不使用 HTML 净化器,这当然不能解决您的问题。
尽管如此,如果您被迫将纯化的 HTML 存储在您的数据库中,那么该线程中的一些建议和想法可能会对您有所帮助:
Perhaps a more useful response would be: store the raw, user submitted data (without running HTML Purifier on it) in the database, and run search queries on that. However, store in the database as well a cached version of the HTML Purified version.
或者(以<
为例):
No such boolean flag exists, and it would be reasonably tricky to implement safely (you'd want to do something silly like convert literal < and friends to some unforgeable piece of text and then convert < to the literal version.)
但后者不是一个稳健的方法,前者是不必要的冗余。