XSS 脚本是如何执行的?



例如,

http://testsite.test/<script>alert("TEST");</script>

我知道如果浏览器只包含域和资源路径,浏览器会发送对 url 的请求。如果有查询字符串,则通过 GET 方法发送。但是,脚本究竟是如何在客户端的浏览器中执行的呢?

为什么有人会"启用"XSS?

我正在学习XSS,所以请帮助我!

对于一个非常基本的示例,假设您有一个表单,您可以在其中询问用户名。然后在下一页上,您(作为应用程序开发人员)写下"您好,[用户输入的任何内容]"。问题是,如果用户输入类似<script>alert(1)</script>的内容作为他的名字,这将按原样打印在易受攻击的页面中,并在浏览器中运行。这称为反射xss,这只是冰山一角,例如,您的用户可能会将他们的真实姓名存储在数据库中,而不同页面上的查询可能会列出用户名,其中还可能包含javascript,在这种情况下,这将在不同用户的浏览器中运行。

顺便说一句,解决方案是输出编码,这在实践中意味着用安全字符替换某些字符,例如使用<和>替换<或>,以便在写入脚本标记时不会执行(但这只是 html 编码的一小部分,有时需要不同的字符)。

所以关键是XSS不是由开发人员故意启用的,恰恰相反,每个人都想避免它。这是代码的漏洞。但是,有时它并不那么简单,特别是对于不了解安全编码实践的人来说。

请注意,XSS比我在这里提到的要多得多,无论是在它如何表现自己方面,还是在如何防止它方面。

最新更新