XSS 脚本是如何执行的?
How does an XSS script get executed?
例如,
http://testsite.test/<script>alert("TEST");</script>
我知道如果 url 仅包含域和资源路径,浏览器会发送请求。如果有查询字符串,它将通过 GET 方法发送。但是一个脚本在客户端浏览器中究竟是如何执行的呢?
为什么会有人 "enable" XSS?
我正在学习 XSS,所以请帮助我!
举一个非常基本的例子,假设您有一个要求输入用户名的表单。然后在下一页上,您(作为应用程序开发人员)编写 "Hello, [anything the user entered]"。问题是,如果用户在他的名字中输入类似 <script>alert(1)</script>
的内容,这将按原样打印在易受攻击的页面中,并在浏览器中打印 运行 。这称为反射 xss,这只是冰山一角,例如您的用户可能将他们的真实姓名存储在数据库中,而在不同页面上的查询可能会列出用户名,其中可能还包含 javascript在这种情况下,在不同用户的浏览器中将是 运行。
顺便说一下,解决方案是输出编码,这在实践中意味着用安全字符替换某些字符,例如将 < 或 > 替换为 < >这样当脚本标签被写入时,它不会被执行(但这只是html编码的一小部分,有时需要不同的编码)。
所以关键是 XSS 并不是开发人员故意启用的,恰恰相反,每个人都想避免它。这是代码的漏洞。然而,有时它并不是那么简单,特别是对于不了解安全编码实践的人。
请注意 XSS 比我在这里提到的要多,包括它如何表现出来以及如何防止它。
例如,
http://testsite.test/<script>alert("TEST");</script>
我知道如果 url 仅包含域和资源路径,浏览器会发送请求。如果有查询字符串,它将通过 GET 方法发送。但是一个脚本在客户端浏览器中究竟是如何执行的呢?
为什么会有人 "enable" XSS?
我正在学习 XSS,所以请帮助我!
举一个非常基本的例子,假设您有一个要求输入用户名的表单。然后在下一页上,您(作为应用程序开发人员)编写 "Hello, [anything the user entered]"。问题是,如果用户在他的名字中输入类似 <script>alert(1)</script>
的内容,这将按原样打印在易受攻击的页面中,并在浏览器中打印 运行 。这称为反射 xss,这只是冰山一角,例如您的用户可能将他们的真实姓名存储在数据库中,而在不同页面上的查询可能会列出用户名,其中可能还包含 javascript在这种情况下,在不同用户的浏览器中将是 运行。
顺便说一下,解决方案是输出编码,这在实践中意味着用安全字符替换某些字符,例如将 < 或 > 替换为 < >这样当脚本标签被写入时,它不会被执行(但这只是html编码的一小部分,有时需要不同的编码)。
所以关键是 XSS 并不是开发人员故意启用的,恰恰相反,每个人都想避免它。这是代码的漏洞。然而,有时它并不是那么简单,特别是对于不了解安全编码实践的人。
请注意 XSS 比我在这里提到的要多,包括它如何表现出来以及如何防止它。