XSS叫做跨站脚本攻击,分为三类,存储型XSS,反射型XSS和DOM型XSS。
XSS的本质:恶意代码未经过滤,与网站正常的代码混在一起,导致恶意代码随着正常代码的执行被执行。恶意代码在用户的终端执行,可以获取用户信息,或者冒充用户做一些事情。
存储型XSS的攻击步骤:
1、攻击者将恶意代码提交到目标网站的数据库中。
2、用户打开目标网站,网站服务端将恶意代码从数据库中取出,拼接在html中返回给浏览器。
3、用户浏览器接收到响应执行代码,其中恶意代码也被执行。
4、恶意代码窃取用户数据,或者冒充用户行为。
反射型XSS的攻击步骤:
1、攻击者构造出包含恶意代码的url;
2、用户打开带有恶意代码的url时,网站服务器端将恶意代码从url中取出,拼接在html中返回给浏览器。
3、用户浏览器接收到响应后解析执行,恶意代码也被执行。
4、攻击者窃取用户信息或冒充用户身份
反射型XSS和存储型XSS的区别:存储型XSS的恶意代码存在数据库中,反射型XSS的恶意代码存在url中。
反射型XSS常见于通过url传递参数的功能,网站搜索,跳转等。用户主动点击恶意url才能生效,post的内容也可以触发反射型xss。
DOM型XSS
DOM型XSS的攻击步骤:
1、攻击者构造出包含恶意代码的特殊url;
2、用户打开带有恶意代码的url;
3、用户浏览器接收到响应后解析执行,前端JS取出URL中的恶意代码并执行。
4、恶意代码窃取用户数据或者冒充用户的行为。
DOM型XSS与反射型XSS以及存储型XSS的区别:DOM型XSS中,取出和执行恶意代码都在浏览器端执行,属于前端JS的自身漏洞,其他两种XSS都有服务器取出,属于服务端的安全漏洞。
防止XSS攻击:输入过滤,输出编码。