2021-11-23
什么是XSS?
在页面加载时,同时把攻击者的js代码渲染到页面中,通常获取受害者的cookie
分类
1.反射型:需要构造好的js代码,让用户去点击链接才能触发
2.存储型:代码存储在服务器中,用户每次访问都能够触发,能够进行蠕虫传播
3.DOM型:通过事件触发的一类反射型XSS
常见的事件:onload:当页面或图像加载完成后立即触发
onblur:元素失去焦点
onfocus:元素获得焦点
onclick:鼠标点击某个对象
onchange:用户改变域的内容
onmouseover:鼠标移动到某个元素上
onmouseout:鼠标从某个元素上移开
onkeyup:某个键盘的键被松开
onkeyup:某个键盘的键被按下
注入方式
1.在 HTML 中内嵌的文本中,恶意内容以 script 标签形成注入。
2.在内联的 JavaScript 中,拼接的数据突破了原本的限制(字符串,变量,方法名等)。
3.在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签。
4.在标签的 href、src 等属性中,包含 javascript: 等可执行代码。
5.在 onload、onerror、onclick 等事件中,注入不受控制代码。
6.在 style 属性和标签中,包含类似 background-image:url("javascript:..."); 的代码(新版本浏览器已经可以防范)。
7.在 style 属性和标签中,包含类似 expression(...) 的 CSS 表达式代码(新版本浏览器已经可以防范)。
防御
1.同源策略
2.非必要不开启CORS
3.白名单和黑名单
4.配置Vary:Origin头部
5.非必要不使用ACAC
6.限制缓存时间
7.输出编码
8.输入过滤
9.内容安全策略CSP
整体的 XSS 防范是非常复杂和繁琐的,我们不仅需要在全部需要转义的位置,对数据进行对应的转义。而且要防止多余和错误的转义,避免正常的用户输入出现乱码。
bypass
1.预加载
2.MIME Sniff
3.302跳过
4.iframe
5.base-uri
练习靶场:
DVWA:https://github.com/digininja/DVWA
xss-labs:https://github.com/do0dl3/xss-labs。
pikachu:https://github.com/zhuifengshaonianhanlu/pikachu
带外平台:
https://xss.pt/
https://xsshs.cn/
参考链接:https://tech.meituan.com/2018/09/27/fe-security.html
自己的另一篇文章:https://blog.nowcoder.net/n/ba6da1a973c74ed692b4de9dbc1054cf
复习啊复习,自己写过的东西都不记得。