XSS是否总是需要服务器端漏洞才能工作



如果这是一个愚蠢的问题,我们深表歉意。。。它是在一个理想化的、无法实现的假设的背景下,帮助我理解XSS攻击的核心:

如果是一个普通的,除了不安全的HTML/CSS/JS脚本客户端与完全防弹的PHP/MySQL脚本服务器端交换JSON数据(不涉及文件/文件系统(之外,没有任何冒险的非恶意,XSS可能吗?

或者所有XSS攻击总是基于访问/更改/存储服务器端内容的能力

我只是想弄清楚"边缘"在哪里。在过去的几天里,我在XSS上读了几十篇文章/帖子,但如果答案在其中任何一篇中,我都不明白

提前谢谢。

简而言之,XSS就是能够在用户的上下文中运行javascript,通过应用程序输入提供。这意味着通过开发者控制台进行操作不算在内,用户必须主动打开控制台并做他通常不会做的事情——在大多数情况下,这不是有效的攻击向量。然而,所有应用程序输入(UI、url栏、请求头等上的输入(都是注入javascript的潜在方式。

在反射或存储xss的情况下,请求被发送到服务器,响应包含请求中的javascript,使其在客户端上运行。所以这些需要一个服务器。

然而,在DOM xss的情况下,它可能都在客户端上,在易受攻击的javascript代码中。

考虑一个例子,UI有一个输入字段,当用户单击按钮("发送"(时,他输入的任何内容都会通过客户端上的javascript添加到某种日志(例如"聊天窗口"(中。如果用户输入<script>alert(1)</script>,它可能会以html的形式附加到日志区域,从而以javascript的形式执行,而不会被发送到服务器。这将是DOM xss的一个示例,修复方法显然是将其附加为文本节点,而不是html。

这通常被评为较低的风险,因为在许多情况下,远程攻击者对毫无戒心的用户进行实际利用的机会有限。但它仍然是一个漏洞(例如,攻击者可能会让用户将某些内容复制粘贴到字段中,等等(。

还有一个典型的可利用案例是,javascript读取url的一部分并将其添加到DOM中,该url实际上可以由远程攻击者提供(以发送给受害者用户的链接的形式(。

最新更新