XSS的三种攻击及httponly---20200812

参考:为什么cookie会有httponly属性?真实案例解释XSS的三种攻击

XSS:hacker往HTML中注入恶意脚本,浏览器是无法区分脚本是被恶意注入的还是正常的页面脚本,所以恶意注入 JavaScript 脚本也拥有所有的脚本权限。

一、恶意脚本都能做哪些事情?
1.窃取用户的cookie信息,模拟用户的登录,用用户的账号进行操作
2.监听用户在页面上的操作,比如键盘上键入的字符串,从而窃取用户的密码。
3.更改DOM结构,添加浮窗广告

二、xss攻击有三种类型
1.存储型
将恶意代码提交到网站的数据库中,用户访问该页面时,恶意脚本就会将用户的cookie信息 上传到另外的恶意服务器上。

2.反射型
hacker需要找到一个接口漏洞——用户给服务器发送的一些参数,服务器没有经过处理,直接原封不动返回部分参数。黑客会利用这个漏洞,把恶意脚本当参数发给服务器,服务器直接返回了这个脚本字符串,在浏览器DOM解析器中就顺利引入恶意脚本达成hack。

存储型XSS和反射型XSS的区别:1. 反射型XSS不会在服务器上存储脚本 ;2.脚本运行的条件不同,存储型只要用户正常访问网页就会触发,反射型则需要用户点击包含漏洞的URL。

3.基于DOM的XSS攻击
一般来说,hacker是劫持不了正常的传输网络,但如果有内鬼能通过中间人代理劫持HTML传输,就可以修改HTML文件,在其中任意穿插恶意脚本,再发送给用户。这种情况会出现在运营商中间。

三、如何预防?
1.存储型和反射型都是服务器没有严格检测用户的输入数据。可以通过给用户的输入做过滤来预防。
2.基于DOM的攻击,可以使用HTTPS进行传输,就可以避免中间人修改HTML文件了。
3.充分利用CSP:
(1)限制加载其他域下的资源文件
(2)禁止向第三方域提交数据
(3)禁止执行内联脚本和未授权脚本。提供上报机制,帮助我们尽快发现有哪些XSS攻击,以便尽快修复问题
4.使用HttpOnly属性,避免js脚本操作cookie。即使被注入了恶意脚本,也是无法获取到设置了httpOnly的数据。响应头里可以设置HttpOnly。
5.添加验证码防止脚本冒充用户提交危险操作。
6.对于一些不受信任的输入,还可以限制其输入长度。

你可能感兴趣的:(XSS的三种攻击及httponly---20200812)