这是我参与「第五届青训营 」伴学笔记创作活动的第13天,下面跟我一起看看青训营WEB安全防御篇部分讲了什么吧~
两个角度看WEB安全
- 假如你是一个hacker --攻击
- 假如你是一个开发者 --防御
防御篇
1.XSS
1)原则
- 永远不信任用户的提交内容
- 不要将用户提交内容直接转换成 DOM
2)XSS——现成工具
前端
- 主流框架默认防御 XSS
- google - closure - library
服务端(Node)
- DOMPurify
2.Same-origin Policy(同源策略)
- 协议
- 域名
- 端口号
3.Content Security Policy(CSP)
- 哪些源(域名)被认为是安全的
- 来自安全源的脚本可以执行,否则直接抛错
- 对 eval + inline script 说 NO
4.CSRF 的防御
if 伪造请求 === 异常来源
then 限制请求来源 -> 限制伪造请求
请求头部
Origin
同源请求中,GET + HEAD 不发送
Referrer
5. CSRF —— token
除了 Origin + Referrer 其他判断【请求来自于合法来源】的方式
- if(请求来自合法页面)
- then(服务器接收过页面请求)
- then(服务器可以标识)
6.CSRF anti-pattern
GET !== GET + POST
7.避免用户信息被携带:Samesite Cookie
1)限制的是:
- Cookie domain
- 页面域名
2)依赖Cookie的第三方服务怎么办?
- 内嵌一个×站播放器,识别不了用户登录态,发不了弹幕
Set-Cookie: SameSite=None;Secure;
8.SameSite vs CORS
SameSite
- Cookie发送
- domain vs页面域名
- “我跟你说个事儿出这屋我可就不认了”
CORS
- 资源读写(HTTP请求)
- 资源域名vs页面域名
- 白名单
9.Regex DoS
- Code Review(X/(ab*)+/)
- 代码扫描 + 正则性能测试
- X用户提供的使用正则
10.Logical DoS
-
不是非黑即白
- 有些 case,只有在请求量大到一定之后,才会体现
-
分析代码中的性能瓶颈
- 同步调用
- 串行逻辑
- CPU 密集型操作
-
限流
10.DDoS
-
流量治理
- 负载均衡(过滤)
- API 网关(过滤)
- CDN(抗量)
-
快速自动扩容(抗量)
-
非核心服务降级(抗量)
11.防御Injection
- 找到项目中查询SQL的地方
- 使用prepared statement
PREPARE q FROM 'SELECT user FROM users WHERE gender = ?';
SET @gender = 'female';
EXECUTE q USING @gender;
DEALLOCATE PREPARE q;
Injection beyond SQL
-
最小权限原则
- sudo ll root
-
建立允许名单+过滤
- rm
-
对URL类型参数进行协议、域名、ip等限制
- 访问内网
12.HTTPS 的特性
- 可靠性:加密
- 完整性:MAC 验证
- 不可抵赖性:数字签名