跨站脚本攻击(XSS)是一种攻击技术,涉及将攻击者提供的代码注入到用户的浏览器实例中。浏览器实例可以是标准的Web浏览器客户端,也可以是嵌入软件产品中的浏览器对象,例如WinAmp中的浏览器、RSS阅读器或电子邮件客户端。代码本身通常用HTML/JavaScript编写,但也可能扩展到VBScript、ActiveX、Java、Flash或任何其他浏览器支持的技术。 当攻击者让用户的浏览器执行其代码时,该代码将在托管网站的安全上下文(或区域)内运行。凭借此权限级别,代码能够读取、修改和传输浏览器可访问的任何敏感数据。遭受跨站脚本攻击的用户可能会被劫持账户(Cookie盗窃)、浏览器被重定向到其他位置,或者看到由其访问的网站提供的欺诈性内容。跨站脚本攻击实质上破坏了用户与网站之间的信任关系。使用从文件系统加载内容的浏览器对象实例的应用程序,可能会在本地计算机区域下执行代码,从而导致系统沦陷。
跨站脚本攻击分为三种类型:非持久型、持久型和基于DOM型。 非持久型攻击和基于DOM型攻击需要用户访问特制的恶意链接(包含恶意代码)或访问包含Web表单的恶意网页,当表单提交到易受攻击的网站时,便会发起攻击。使用恶意表单通常发生在易受攻击的资源仅接受HTTP POST请求的情况下。在这种情况下,表单可以在受害者不知情的情况下自动提交(例如通过使用JavaScript)。点击恶意链接或提交恶意表单后,XSS有效载荷将被回显并由用户浏览器解释并执行。另一种发送几乎任意请求(GET和POST)的技术是使用嵌入式客户端,例如Adobe Flash。 持久型攻击发生在恶意代码被提交到网站并存储一段时间的情况下。攻击者偏好的目标通常包括论坛帖子、Web邮件消息和Web聊天软件。毫无戒心的用户无需与任何额外的网站/链接(例如攻击者网站或通过电子邮件发送的恶意链接)交互,只需查看包含该代码的网页即可。