代码之家  ›  专栏  ›  技术社区  ›  vivek

我们所说的上下文自动转义是什么意思?

  •  8
  • vivek  · 技术社区  · 9 年前

    在阅读关于 Closure Templates 我遇到了以下语句:

    闭包模板是上下文自动转义的,以减少XSS的风险。

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

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

    1 回复  |  直到 3 年前
        1
  •  8
  •   Zejji Zejji    9 年前

    有关安全和自动逃逸的详细信息,请访问 this 关闭模板文档的页面。特别是,看看下面的例子 here .

    您将看到输入, {$x} 根据要在模板输出中插入的位置(例如,HTML、JavaScript、CSS等),对其进行不同的转义 上下文 (即上下文相关)自动转义。

    如文件所述:

    • 什么时候 {$x} 出现在HTML文本中,我们对其进行实体编码(< &lt; ).
    • 什么时候 {$x} 出现在URL中或作为CSS数量,我们拒绝了它,因为它有协议 javascript: 那不是 http https ,而是输出一个安全值 #zSoyz {$x} 如果出现在URL的查询部分,我们将对其进行百分比编码,而不是直接拒绝(<%3C)。
    • 什么时候 {$x} 出现在JavaScript中时,我们将其用引号(如果还没有用引号括起来)括起来,并转义HTML特殊字符(<\x3c)。
    • 什么时候 {$x} 出现在CSS引号内,我们做了类似于JavaScript的事情,但使用了CSS转义约定(<\3c)。

    恶意输出已被修改。