这是我参与「第四届青训营」笔记创作活动的第1天
一.攻击篇
1.跨站脚本攻击Cross-Site Scripting(XSS)
盲目信任用户提交内容,将字符串直接转换成dom
document.write
element.innerHTML = String
SSR(user_data)
分类:
- Stored XSS:恶意脚本储存在数据库中
- Reflected XSS:通过URL攻击,在服务端注入
- DOM-based XSS:通过URL攻击,全在浏览器中执行
- Mutation-baswd XSS:利用浏览器渲染特性进行攻击
2.跨站伪造请求Cross-site request forgery(CSRF)
在用户不知情下,利用用户权限,构造http请求,窃取或修改用户信息
3.服务器端伪造请求Server-side request forgery(SSRF)
4.SQL注入
注入SQL语句,在服务器端执行获取、删除、增添操作
5.Denial of Service(DoS)
通过某种方式,导致服务器资源呗显著消耗,来不及响应更多请求,导致请求积压
6.Distributed Dos(DDoS)
短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致1请求堆积,进而雪崩效应,无法响应新请求
7.中间人攻击
可以窃取信息,修改请求、返回结果
二.防御篇
1.XSS
- 字符串转义
- 扫描svg文件
2.内容安全策略Content Security Policy(CSP)
- 定义安全的源(域名)
- 来自安全源的脚本可以执行,否则报错
浏览器meta:
<meta http-equiv="Content-Security-Policy" content="script-src self">
3.CSRF
- 通过校验请求的Origin + Referrer限制请求来源
- token与具体用户进行绑定,设置过期时间
- 服务器设置X-Frame-Options: DENY/SAMEORIGN规避iframe攻击
- 明确划分get和post请求
4.Injection
找到项目中查询SQL的地方,使用prepared statement
5.Dos
- 避免贪婪匹配
- 代码扫描
- 拒绝使用用户提供正则表达式
6.DDos
- 流量治理
- 快速自动扩容
- 非核心服务降级
7.传输层
使用HTTPS协议