Web安全防御篇 | 青训营笔记

72 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天

防御篇

XSS

永远不要相信用户提交的内容,永远不要将用户提交的内容作为DOM

前端:

  • 主流框架默认防御XSS(innerHTML)
  • google-closure-library 服务端(Node):
  • DOMPurify

如果用户有必须上传DOM的需求,可以使用new DOMParser(),对于用户上传的svg,也要对其中内容进行检查(其中可以插入script标签),小心自定义跳转和自定义样式。

CSP(Content Security Policy)

  • 哪些源(域名)被认为是安全的
  • 来自安全源的脚本可以执行,否则直接抛错
  • 对eval+inline script说No

image.png

CSRF

CSFR的防御 1.对请求同步的Origin、Refer进行校验 image.png

2.token

image.png

image.png

iframe攻击:iframe中发生的请求是同源请求,可以通过配置X-Frame-Options来防御。

避免用户信息被携带:SameSite Cookie,其他页面不能使用此页面的Cookie(判别根据:页面域名与domain属性是否一致)

image.png

SameSite VS Cors

SameSite

  • Cookie发送
  • domain vs 页面域名
  • "我跟你说个事儿,出这屋我可就不认了"

CORS

  • 资源读写(HTTP请求)
  • 资源域名 vs 页面域名
  • 白名单

SameSite demo

image.png

Injection

  • SQL注入:找到使用SQL的地方,使用prepared statement
  • 最小权限原则:sudo||root
  • 建立允许名单+过滤:rm
  • 对URL类型参数进行协议、域名、ip等限制:访问内网

Dos

  • ReDos:完善Code Review
  • 代码扫描 + 正则性能测试
  • 拒绝使用用户提供的正则

过滤:

  • 流量治理
    • 负载均衡

抗量:

    • API网关
    • CDN
  • 快速自动扩容
  • 非核心服务降级

传输层————防御中间人

HTTPS:

  • 可靠性:加密
  • 完整性:MAC验证
  • 不可抵赖性:数字签名

image.png

HTTPS————完整性

image.png

HTTPS————不可抵赖

SRI

image.png