如何处理用户生成的标记中的ASCII转义字符?

我正在使用HTML Purifier,一个PHP“过滤器来防范XSS并确保符合标准的输出”,以清理/标准化用户输入的标记。 这是用户输入标记的示例:
<font face="'Times New Roman', Times">TEST</font>
产生:
<span style="font-family:&quot;Times New Roman&quot;, Times;">TEST</span>
我有点困惑,因为
&quot
甚至不是单引号的逃脱字符。这是最好的做法,因为我将在以后使用这个用户生成的内容? 保持原样 净化器执行后,将所有
&quot
替换为
'
以不同方式配置HTML Purifier 别的什么?     
已邀请:
看起来对我好。 我认为从单引号到双引号的转换来自这样一个事实:HTML净化器拆分整个标记,并根据自己的规则将它重新组合在一起,当引用
style
属性中的内容时恰好使用双引号。 它也验证我的罚款。您要验证哪种doctype? 如果我没有忽略某些东西,我会说按原样使用是可以的。     
输出是XHTML有效但实体转换是错误的。
<img src="/test" alt="I'm ok"/>
将转换为
<img src="/test" alt="I&quot;m ok">
一个简单的就足够了:
$allowed_tags='<font>';
echo htmlspecialchars(strip_tags(rawurldecode($input),$allowed_tags),ENT_COMPAT,'UTF-8');
但它不会转换&lt; font&gt;标记为&lt; span&gt;。     

要回复问题请先登录注册