跨站脚本攻击(XSS)是一种常见的 Web 安全漏洞,主要分为非持久型跨站(反射型跨站脚本漏洞)、持久型跨站和 DOM 跨站三种类型。
**一、三种类型的区别**
1. **非持久型跨站(反射型跨站脚本漏洞)** - **攻击方式**:跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来。 - **存储位置**:这类跨站的代码不存储到服务端(比如数据库中)。 - **常见场景**:比如用户点击了一个恶意链接,该链接中的恶意脚本被服务器反射回用户的浏览器并执行。
2. **持久型跨站** - **攻击方式**:跨站代码存储于服务端。 - **存储位置**:常见情况是某用户在论坛发贴,如果论坛没有过滤用户输入的 Javascript 代码数据,就会导致其他浏览此贴的用户的浏览器会执行发贴人所嵌入的 Javascript 代码。 - **常见场景**:在社交网络、论坛等用户可输入内容并长期存储的平台上较为常见。
3. **DOM 跨站(DOM XSS)** - **攻击方式**:是一种发生在客户端 DOM(Document Object Model 文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。 - **存储位置**:不涉及服务端存储,完全在客户端通过修改 DOM 结构来执行恶意脚本。 - **常见场景**:通过恶意构造的 URL 参数、本地存储数据等方式,在客户端页面加载时触发恶意脚本执行。
**二、三种类型的危害**
1. **窃取隐私信息** - 三种类型的 XSS 攻击都可以窃取用户的登录凭证、个人资料、信用卡信息等敏感数据。例如,攻击者可以通过在页面中注入恶意脚本,窃取用户输入的用户名和密码,然后将这些信息发送到攻击者控制的服务器上。 - 对于持久型跨站和 DOM 跨站,由于攻击代码可能长期存在于页面中,用户在不知情的情况下可能会多次泄露隐私信息。
2. **钓鱼欺骗** - 攻击者可以利用 XSS 漏洞在受害用户的浏览器中弹出虚假的登录页面、中奖通知等,诱导用户输入敏感信息,从而进行钓鱼攻击。 - 非持久型跨站可以通过恶意链接快速实施钓鱼攻击,而持久型跨站和 DOM 跨站可以在用户访问特定页面时随时进行钓鱼欺骗。
3. **篡改网页内容** - 攻击者可以通过 XSS 攻击修改网页的显示内容,误导用户或者破坏网站的正常功能。 - 例如,在非持久型跨站中,攻击者可以通过恶意链接让用户访问被篡改的页面;持久型跨站可以长期修改特定页面的内容;DOM 跨站可以动态修改页面的 DOM 结构,实现网页内容的篡改。
4. **传播恶意软件** - XSS 攻击可以被用来传播恶意软件,如病毒、木马等。 - 攻击者可以在页面中注入恶意脚本,引导用户下载并安装恶意软件。持久型跨站和 DOM 跨站由于攻击的持续性,更容易传播恶意软件。
5. **破坏用户体验** - 即使不进行恶意攻击,XSS 漏洞也可能被用来进行恶作剧,如弹出大量广告窗口、修改页面布局等,严重影响用户的使用体验。 - 三种类型的 XSS 攻击都可能导致用户对受攻击的网站失去信任,减少网站的流量。