type
status
date
slug
summary
tags
category
icon
password
什么是跨站脚本攻击(XSS)
跨站脚本(Cross Site Scripting,XSS)指攻击者在页面插入恶意代码,当其他用户访问时,浏览会器解析并执行这些代码,达到窃取用户身份、钓鱼、传播恶意代码等行为。一般我们把 XSS 分为反射型、存储型、DOM型 3 种类型。
反射型 XSS
反射型 XSS 也叫“非持久型 XSS”,是指攻击者将恶意代码通过请求提交给服务端,服务端返回的内容,也带上了这段 XSS 代码,最后导致浏览器执行了这段恶意代码。
反射型 XSS 攻击方式需要诱导用户点击链接,攻击者会伪装该链接(例如短链接),当用户点击攻击者的链接后,攻击者便可以获取用户的 cookie 身份信息。
案例:
服务端直接输出参数内容:
恶意代码链接:
存储型 XSS
存储型 XSS 也叫“持久型XSS”,会把用户输入的数据存储在服务端,这种XSS具有很强的稳定性。
案例:
比如攻击者在一篇博客下留言,留言包含恶意代码,提交到服务端后被存储到数据库。所有访问该博客的用户,在加载出这条留言时,会在他们的浏览器中执行这段恶意的代码。
DOM 型 XSS
DOM 型 XSS 是一种特殊的反射型 XSS,它也是非持久型 XSS。相比于反射型 XSS,它不需要经过服务端,而是改变页面 DOM 来达到攻击。同样,这种攻击方式也需要诱导用户点击。
案例:
目标页面:
恶意代码链接:
防御手段
- 参数验证,不符合要求的数据不要存入数据库
- 对特殊字符转义,如"<"、">"、"/"、"&"等
- 避免使用eval、new Function动态执行字符串的方法
- 避免使用 innerHTML、document.write 直接将字符串输出到HTML
- 把一些敏感的 cookie 设置为 http only,避免前端访问 cookie
- 作者:esmiler
- 链接:https://blog.jddfe.com/article/2079255d-49c9-42b2-bc71-ebe507ef8f0b
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。