代码之家  ›  专栏  ›  技术社区  ›  Kyle Cureau

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

  •  2
  • Kyle Cureau  · 技术社区  · 14 年前

    我在用 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 甚至不是一个引语的转义字符。既然我以后要使用这个用户生成的内容,那么这里的最佳实践是什么?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Pekka    14 年前

    我看没问题。

    style 属性。

    如果我不是忽略了什么,我会说这是很好的使用。

        2
  •  1
  •   bcosca    14 年前

    输出是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');
    

    但它不会将<font>标记转换为<span>。