安全性测试之XSS攻击
安全性测试之XSS攻击
名称 | 攻击方式 | 对应策略 | 危害 |
---|---|---|---|
反射型 XSS (非持久型) |
将XSS代码放在URL中,将参数提交到服务器。服务器解析后响应,在响应结果中存在XSS代码,最终通过浏览器解析执行。 |
1、数据不直接存入服务器,进行数据处理(加密、解密) 2、对重要的cookie设置httpOnly, 防止客户端通过document.cookie读取cookie 3、DOM XSS的发生主要是在JS中使用eval造成的,所以应当避免使用eval语句 |
1、盗取用户cookie值 2、使用js或css破坏页面正常的结构与样式 3、侵占服务器资源 4、流量劫持 5、利用可被攻击的域受到其他域信任的特点, 做不合法的操作 |
存储型 XSS (持久型) |
将XSS代码存储到服务端(数据库、内存、文件系统等),接口请求时直接从服务器读取 |
||
DOM XSS | 不需要服务器端的解析响应的直接参与,直接通过浏览器端的DOM解析 |
模拟攻击demo:
1、反射型XSS:在url中写入:value= <script>alert('xss!');</script>,并在浏览器中查看修改是否生效
有弹框弹出则是攻击成功
2、存储型CSS:向数据库中写入:<script>alert(1)</script>,并通过接口获取:
有弹框弹出则是攻击成功,无弹框则攻击失败,当前结果:攻击失败~~~
3、SQL语句恶意填入: userName ='test' OR '1'='1' 与`password` ='test' or '1' = '1'
例子:SELECT * from user WHERE userName ='test' OR '1'='1' and `password` ='test' or '1' = '1'
实际上运行的SQL命令会变成下面这样的:SELECT * from user;
后果:绕过了login.asp用户身份认证的正常逻辑,获得访问