gpt4 book ai didi

javascript - 什么是 "Escaped"& "Unescaped"输出

转载 作者:IT老高 更新时间:2023-10-28 23:15:24 26 4
gpt4 key购买 nike

我不熟悉 Javascript

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

究竟什么是“转义”和“未转义”输出?

是像“包含一次”和“包含”吗?

(谷歌没有给出任何结果)

最佳答案

转义和取消转义有助于防止 Cross Site Scripting (XSS) 攻击。它是常见的网络攻击之一,因为如果网站设计不周密,很容易创建攻击向量。其排名number 3 in the OWASP's Top 10 vulnerabilities of 2013 .

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

例如,假设您有一个网页接受用户输入他的地址,并且您希望用户在下一页确认它。因此,您将获取用户输入的地址并将其显示在下一页中。如果用户输入一个有效的地址,那将不会有问题。如果用户输入这样的内容会怎样

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

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

这只是基本攻击之一,如果你不转义文本,这是可能的。

因此,通常情况下,用户输入的文本将被转义,然后存储在 DB 中。比如上面看到的攻击向量(脚本标签的东西)会变成这样,在HTML escaping之后

&lt;script&gt;<br/>        alert(&quot;Welcome&quot;);<br/>&lt;/script&gt;

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

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

而不是执行它。

关于javascript - 什么是 "Escaped"& "Unescaped"输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com