这是我参与「第四届青训营 」笔记创作活动的的第6天
Web安全
如何看待网络安全
- 如果你是一个黑客---攻击
- 如果你是一个开发者----防御
攻击篇
1.跨站脚本攻击Cross-Site Scripting(XSS)
盲目信任用户提交内容,将字符串直接转换成dom
分类:
- Stored XSS:恶意脚本储存在数据库中
- Reflected XSS:通过URL攻击,在服务端注入
- DOM-based XSS:通过URL攻击,全在浏览器中执行
- Mutation-baswd XSS:利用浏览器渲染特性进行攻击
2.跨站伪造请求Cross-site request forgery(CSRF)
在用户不知情下,利用用户权限(cookie),构造http请求,窃取或修改用户信息
3.服务器端伪造请求Server-side request forgery(SSRF)
请求用户自定义callback url
web server 通常有内网访问权限
4.SQL注入
注入SQL语句,在server端执行获取、删除、增添操作数据
5.Denial of Service(DoS)
通过某种方式,导致服务器资源呗显著消耗,来不及响应更多请求,导致请求挤压
特点
- 耗时的同步操作
- 数据库写入
- SQL join
- 文件备份
- 循环执行逻辑
6.Distributed Dos(DDoS)
短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致1请求堆积,进而雪崩效应,无法响应新请求
攻击特点:直接访问ip 任意api 消耗大量带宽(耗尽)
7.中间人攻击
可以窃取信息,
修改请求、返回结果
特点
- 明文传输
- 信息篡改不可知
- 对方身份未验证
防御篇
1.XSS
永远不信任用户的提交内容
不要将用户提交内容直接转换成DOM
前端
主流框架默认防御xss
服务端(Node)
-DOMPurify
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协议