什么是" Escaped" &安培; "未逸出"产量

时间:2013-12-22 09:19:09

标签: javascript node.js coffeescript

我不熟悉Javascript

学习模板node.js模板引擎,它有“Escaped”& “未转义”输出

实际上是什么“逃脱”& “未转义”的输出?

是否像“包含一次”& “包括”?

(Google没有给出相关结果)

2 个答案:

答案 0 :(得分:17)

转义和转义非常有助于防止Cross Site Scripting(XSS)攻击。这是常见的网络攻击之一,因为如果网站设计不仔细,很容易创建攻击媒介。它排名number 3 in the OWASP's Top 10 vulnerabilities of 2013

主要目的是让 NOT 让浏览器以不同于预期的方式执行或解释HTTP响应。

例如,假设您有一个网页,接受用户输入他的地址,您希望用户在下一页确认。因此,您将获得用户输入的地址并将其显示在下一页中。如果用户输入有效地址,则不会出现问题。如果用户输入类似的内容

,该怎么办?
<script>
    alert("Welcome");
</script>

您的下一页只会生成一个提示Welcome的提醒框。现在,考虑这种情况。您正在编写博客应用程序,用户在提供的文本框中输入上面显示的脚本。您将把它存储在数据库中,任何想要看到您的博客的人都可以看到该警报框。最糟糕的是,如果攻击者将其置于无限循环中,那么访问该博客的人将根本无法阅读该内容。

这只是一种基本的攻击,如果你不逃避文本,这是可能的。

因此,通常,输入的文本用户将被转义然后存储在数据库中。例如,在HTML escaping

之后,上面看到的攻击向量(脚本标记事物)将变为这样
&lt;script&gt;<br/>        alert(&quot;Welcome&quot;);<br/>&lt;/script&gt;

现在,浏览器不会将此视为脚本元素而是HTML元素,因此它会将其显示为

<script>
    alert("Welcome");
</script>

而不是执行它。

答案 1 :(得分:0)

Escape:此函数对特殊字符进行编码,但以下情况除外:* @ - _ +。 / http://www.w3schools.com/jsref/jsref_escape.asp

Unescape:unescape()函数解码编码的字符串。 http://www.w3schools.com/jsref/jsref_unescape.asp