【问题标题】:Does HTML encoding prevent XSS security exploits?HTML 编码是否可以防止 XSS 安全漏洞?
【发布时间】:2010-02-25 14:53:34
【问题描述】:

通过简单地转换以下(“大 5”):

& -> &
< -> &lt;
> -> &gt;
" -> &#034;
' -> &#039;

你会阻止 XSS 攻击吗?

我认为您也需要在字符级别上列入白名单,以防止 certain attacks,但 following answer 表示它过于复杂。

编辑这个page详细信息it does not prevent more elaborate injections, does not help with "out of range characters = question marks" when outputting Strings to Writers with single byte encodings, nor prevents character reinterpretation when user switches browser encoding over displayed page.本质上只是转义这些字符似乎是一种非常幼稚的方法。

【问题讨论】:

  • ... 维基百科说“值得注意的是,虽然被广泛推荐,但简单地对五个 XML 有效字符执行 HTML 实体编码并不总是足以防止多种形式的 XSS。编码可以是很棘手,强烈建议使用安全编码库。”并引用了这篇文章,虽然我找不到那篇文章中的什么证明了这个说法:owasp.org/index.php/…
  • 只有当您不知道自己在做什么或在不同(错误)的地方做这件事时才比较棘手。只要与它保持一致。在视图层中(重新)显示所有用户控制的输入(请求 URL、请求参数、请求正文等..等等.. 来自用户的所有内容)时仅编码/转义一次。就是这样。
  • 嘿池 - 您愿意更改首选答案吗? @bobince 的答案更好,并且有更多的支持。

标签: xss escaping


【解决方案1】:

你会阻止 XSS 攻击吗?

如果您在正确的时间执行此转义 (*),那么是的,您将阻止 HTML 注入。这是最常见的 XSS 攻击形式。这不仅仅是安全问题,无论如何您都需要进行转义,以便包含这些字符的字符串无论如何都能正确显示。安全问题是正确性问题的一个子集。

我认为你也需要在角色级别上白名单,以防止某些攻击

没有。 HTML 转义会将这些攻击中的每一个都呈现为页面上的非活动纯文本,这正是您想要的。该页面上的攻击范围展示了进行 HTML 注入的不同方法,这可以绕过一些服务器部署的更愚蠢的“XSS 过滤器”,以试图阻止常见的 HTML 注入攻击。这表明“XSS 过滤器”本质上是漏洞和无效的。

还有其他形式的 XSS 攻击可能会或可能不会影响您,例如用户提交的 URI 上的错误方案(javascript: 等),将代码注入回显到 JavaScript 块的数据中(您需要 JSON -style 转义)或样式表或 HTTP 响应标头(同样,当您将文本放入另一个上下文时,您总是需要适当的编码形式;如果您看到任何像 PHP 的 "string $var string" 这样的未转义插值,您应该始终保持怀疑)。

还有文件上传处理、Flash 源策略、旧版浏览器中的 UTF-8 超长序列以及应用程序级内容生成问题;所有这些都可能导致跨站点脚本。但 HTML 注入是每个 Web 应用程序都会面临的主要问题,而如今大多数 PHP 应用程序都会出错。

(*: 这是在将文本内容插入 HTML 时,而不是其他时间。不要在脚本开始时对 $_POST/$_GET 中的表单提交数据进行 HTML 转义;这是一个常见的错误 -方向错误。)

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      对策取决于插入数据的上下文。如果将数据插入 HTML,用转义序列(即字符引用)替换 HTML 元字符会阻止插入 HTML 代码。

      但是,如果您在另一个上下文中(例如,被解释为 URL 的 HTML 属性值),您必须处理具有不同转义序列的其他元字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-08
        • 1970-01-01
        • 2011-09-25
        • 2013-02-16
        • 1970-01-01
        • 2021-12-16
        • 2011-05-31
        • 1970-01-01
        相关资源
        最近更新 更多