这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
面临错综复杂的网络环境,在了解哪些手段会造成 Web 安全事故之后,篇笔记将通过第二种「防御者」角色的视角,剖析不同攻击手段的技术细节,逐个击破安全漏洞,更好地维护 Web 安全。
针对XSS攻击
永远不要相信用户提交的任何内容,永远不要直接生成DOM,当作字符串进行对待
- 主流框架默认防御XSS
- google-closure-library 服务端(Node)
- DOMPurify
如果有一些用户需求就是要求动态生成DOM
同源策略 同源:协议、域名、端口号都相等 非同源的请求一般是不可行的,需要看请求的类型,和对应服务器的配置
CPS Content Security Policy
- 允许开发者定义哪些域名被认为是安全的。
- 来自安全源的脚本可以执行,否则直接报错
- 对eval_inline script 说不
跨站伪造请求的防御方式
除了Origin_Referrer,其他判断请求来自合法来源的方式
- 先有页面,后有请求
if(请求来自合法页面)
then(服务器接受页面请求)
then(服务器可以标识)
CSRF--token
CSRF--iframe攻击
这是一种同源的请求,所以光限制来源无法完全解决。 可以用X-Frame-Option:DENY/SAMORIGIN 可以防御这种攻击
避免用户信息被携带:SameSite Cookie
限制的是:
- Cookie 的domain属性
- 页面域名
SameSite
- cookie发送
- domain vs 页面域名
CORS(更接近白名单的机制)
- 资源读写(HTTP请求)
- 资源域名 vs 页面域名
防御CSRF的策略是:做一个中间件
Injection beyond SQL
- 最小权限原则
- 建立白名单
- 对URL上的参数类型,进行协议、域名、IP进行限制
Regex DoS
- code review
- 代码扫描+正则性能测试
- 不要接受用户提供的使用正则
DDos
- 流量治理
- 负载均衡
- API网关
- CDN
- 快速扩容
- 非核心服务降级