Web 我们所说的概念性自动转义是什么意思?

Web 我们所说的概念性自动转义是什么意思?,web,escaping,xss,Web,Escaping,Xss,当我读到这篇文章时,我遇到了以下陈述: 闭包模板是上下文自动转义的,以降低XSS的风险 据我所知,转义是消除输入字符串中的歧义,如前所述 我不确定这到底意味着什么,也许用真实世界的例子来解释会很有帮助。在闭包模板文档的页面上有关于安全性和自动转义的更多细节。特别是,请看给出的示例 您将看到一个输入,{$x}的转义不同,这取决于它在模板输出中插入的位置(例如在HTML、JavaScript、CSS等中)。这就是上下文(即上下文相关的)自动转义的含义 如文件所述: 当HTML文本中出现{$x}时,

当我读到这篇文章时,我遇到了以下陈述:

闭包模板是上下文自动转义的,以降低XSS的风险

据我所知,转义是消除输入字符串中的歧义,如前所述


我不确定这到底意味着什么,也许用真实世界的例子来解释会很有帮助。

在闭包模板文档的页面上有关于安全性和自动转义的更多细节。特别是,请看给出的示例

您将看到一个输入,
{$x}
的转义不同,这取决于它在模板输出中插入的位置(例如在HTML、JavaScript、CSS等中)。这就是上下文(即上下文相关的)自动转义的含义

如文件所述:

  • 当HTML文本中出现
    {$x}
    时,我们对其进行实体编码(<→ <代码>)
  • {$x}
    出现在URL中或作为CSS数量时,我们拒绝了它,因为它有一个协议
    javascript:
    ,它不是
    http
    https
    ,而是输出一个安全值
    #zSoyz
    。如果
    {$x}
    出现在URL的查询部分,我们将对其进行百分比编码,而不是直接拒绝它(<→ %3C)
  • 当JavaScript中出现
    {$x}
    时,我们用引号(如果还没有引号的话)和转义的HTML特殊字符(<→ \x3c)
  • {$x}
    出现在CSS引号中时,我们做了一些类似于JavaScript的事情,但使用CSS转义约定(<→ \3c)
恶意输出已被删除