Web开发的安全之旅(防御篇) | 青训营笔记

113 阅读2分钟

Web开发安全之旅(防御篇)

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

课程重点

  1. XXS的防御
  2. 防御CSRF的正确知识
  3. 防御Injection
  4. 防御Dos
  5. 防御中间人

详细知识点

XXS的防御

永远不要相信用户直接提交的内容,不要将用户提交的内容直接转成DOM,而是作为string字符串。 image.png 现成工具

  • 前端:主流框架(如:react和vue)都默认防御XSS; google-closure-library也提供了防XSS的各种api工具。
  • 后端:DomPurify

如果必须要将string->DOM,则可以用new DOMParse()进行转义。 要注意以下几点可能产生XSS的情况:

  • 上传SVG image.png
  • Blob动态生成Scriptimage.png
  • 自定义跳转链接image.png
  • 自定义样式image.png

CSRF的防御

  • if 伪造请求===异常来源
  • then 限制请求来源 ->限制伪造请求
  • Origin 同源请求中,GET + HEAD不发送
  • Referer

除了Origin + Referrer,其它判断请求来自合法来源 的方式: if(请求来自合法页面) then(服务器接收过页面请求) then(服务器可以标识)

token防御CSRF image.png iframe攻击 image.png SameSite Cookie:避免用户信息被携带,当前页面域下的cookie只能为当前页可用 image.png image.png SameSite vs CORS

SameSite

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

CORS

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

防御Injection

防止SQL注入:

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

防御Dos

  • Regex Dos:代码扫描+正则性能测试,不使用用户提供的正则
  • Logical Dos:分析代码中的性能瓶颈,限流
  • DDoS:流量治理(负载均衡,API网关,CDN);快速自动扩容;非核心服务降级。

防御中间人

采用Https加密传输协议

image.png