为什么HTML编码可以防止某些XSS攻击?

为什么HTML编码可以防止某些XSS攻击?,html,xss,Html,Xss,我一直在读到您在从服务器返回到客户端的过程中进行HTML编码(我想是吧?),这将防止许多类型的XSS攻击。然而,我一点也不明白。HTML仍将由浏览器使用和呈现,对吗 这怎么能阻止任何事情 我在多个地方、网站和书籍中读到过这方面的内容,但没有任何地方能真正解释这一点。HTML编码将转换为div,这意味着任何HTML标记都将在页面上显示为文本,而不是作为HTML标记执行 转换的基本实体包括: &至& 至 “至” : ”至&x27 /至&x2F 这些编码是文本表示字符的方式,否则这些字符

我一直在读到您在从服务器返回到客户端的过程中进行HTML编码(我想是吧?),这将防止许多类型的XSS攻击。然而,我一点也不明白。HTML仍将由浏览器使用和呈现,对吗

这怎么能阻止任何事情


我在多个地方、网站和书籍中读到过这方面的内容,但没有任何地方能真正解释这一点。

HTML编码将
转换为
div
,这意味着任何HTML标记都将在页面上显示为文本,而不是作为HTML标记执行

转换的基本实体包括:

  • &
    &
:

  • &x27
  • /
    &x2F

这些编码是文本表示字符的方式,否则这些字符将作为标记使用。如果你想写
a想想:编码的HTML是什么样子的?例如,它可以如下所示:

<a href="www.stackoverflow.com">
因此,它将作为文本(as)而不是HTML在客户端上呈现。这意味着您不会看到实际的链接,而是看到代码本身

XSS攻击的工作原理是,有人可以让客户端浏览器解析网站提供商不希望出现的HTML;如果以上内容没有编码,这意味着提供的链接将嵌入到站点中,尽管站点提供商不希望这样


XSS当然有点复杂,通常也涉及JavaScript(因此跨站点脚本编写),但出于演示目的,这个简单的示例就足够了;JavaScript代码与简单HTML标记的情况相同,因为XSS是更通用的HTML注入的特例。

我不知道为什么有人会否决这个问题。这对我来说似乎很合理。此外,了解web漏洞的工作原理非常重要,这样才能避免这些漏洞。哦!现在这是有道理的。因此浏览器不会将其呈现为HTML。我是在ASP.NETMVC的环境中,以及它是如何使用HTML编码的,我认为它是在用它来显示实际的HTML。现在我明白了,它只是在参考价值观时使用的。