这是我参与「第五届青训营 」笔记创作活动的第16天
一、重点内容介绍:
1、攻击篇XSS
2、攻击篇其他
3、防御篇
二、详细知识点
1、攻击篇XSS
XSS
- 什么是XSS?
通过浏览器对网站页面插入恶意交互脚本获取其他用户浏览器当前渲染的账户信息。 - 发生的主要原因:
开发者盲目信任用户的提交内容,以及把用户提交的内容转换为DOM并解析。 - XSS的特点:
通常难以从UI上感知(暗地执行脚本)
窃取用户信息(cookie/token)
绘制UI(例如弹窗),诱骗用户点击/填写表单
XSS分类
- 存储型XSS(Stored XSS)
恶意脚本被存在数据集中
访问页面->读数据==被攻击
危害最大,对全部用户可见 - 反射型XSS(Reflected XSS)
不涉及数据库
从URL上攻击 - DOM型XSS(DOM-based XSS)
不需要服务器的参与
恶意攻击的发起+执行,全在浏览器完成 - 突变型XSS(Mutation-based XSS)
利用了浏览器渲染DOM的特性(独特优化)
不同浏览器,会有区别 (按浏览器进行攻击)
2、攻击篇其他
CSRF攻击
- 在用户不知情的前提下
- 利用用户权限(cookie)
- 构造指定HTTP请求,窃取或修改用户敏感信息
CSRF demo
- 1 用户没有访问银行页面
- 2 银行页面中的特定接口被请求
- 3 请求执行成功
SQLInjection攻击
- 请求 SQL参数(恶意注入)->Server 参数->SQL 运行SQL code ->获取其他信息、修改数据、删除数据
injection不止于SQL
- CLI
- OS command
- Server-Side Requset Forgery(SSRF),服务端伪造请求
- 严格而言,SSRF不是injection,但是原理类似
Denial of Service(DoS)
- 通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。
- ReDoS:基于正则表达式的DoS:
- L-DoS :耗时的同步操作、数据库写入、文件备份、循环执行逻辑。
- DDoS:短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。
- 中间人攻击: 利用Web的明文请求,无法验证请求端身份与其请求体是否含篡改内容。
3、防御篇
XSS
- 永远不要信任用户的提交内容
- 不要将用户提交的内容直接转换出demo
XSS现成工具
- 前端:
主流框架默认防御 XXS
Google- closure- library - 服务端(Node)
DOMPurify
CSP
- 哪些域名被认为是安全的
- 来自安全源的脚本可以执行,否则直接抛错
Samesite
- Cookie 发送
- domain VS 页面域名
- “我跟你说个事儿,出这屋我可就不认了”
CORS
- 资源读写(HTTP请求)
- 资源域名 VS 页面域名
- 白名单
小结
通过今天的学习,我了解了很多关于Web安全的知识,也了解到了安全的重要性。
安全无小事,我们需要保持学习的心态。