我不熟悉Javascript
学习模板node.js模板引擎,它有“Escaped”& “未转义”输出
实际上是什么“逃脱”& “未转义”的输出?
是否像“包含一次”& “包括”?
(Google没有给出相关结果)
答案 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
<script><br/> alert("Welcome");<br/></script>
现在,浏览器不会将此视为脚本元素而是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