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

91 阅读2分钟

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

上篇文章从攻击者的角度讲述了Web开发安全,接下来将从防御者的角度讲述Web开发安全。

针对XSS攻击

image.png

  • 永远不信任用户提交的内容
  • 不要将用户提交的内容直接转换成DOM

防御XSS的现成工具

前端

  • 主流框架默认防御XSS
  • google-closure-library

服务端(Node)

  • DOMPurify

SOP

SOP全称Same-origin Policy,即同源策略。同源策略是浏览器最核心、最基本的安全功能,它影响着浏览器的正常功能。

image.png

CSP

CSP全称Content Security Policy,即内容安全策略。它的出现是为了缓解很大一部分潜在的跨站脚本问题。

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

CSRF

CSRF的防御

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

token

除了Origin + Referrer,还有其他判断请求来自于合法来源的方式:

  • if (请求来自合法页面)
  • then (服务器接收过页面请求)
  • then (服务器可以标识)

过程如下:

image.png

iframe攻击

image.png

避免用户信息被携带: SameSite Cookie

image.png

SameSite vs CORS

SameSite:

  • Cookie 发送
  • domain vs 页面域名

CORS:

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

Injection

  • 找到项目中查询SQL的地方
  • 使用prepared statement

image.png

Injection beyond SQL

  • 最小权限原则
    • 不允许sudo|| root
  • 建立允许名单+过滤
    • 不允许rm
  • 对URL类型参数进行协议、域名、ip等限制
    • 不允许访问内网

防御DoS

Regex DoS

  • Code Review (X /[ab*)+/)
  • 代码扫描+正则性能测试
  • X用户提供的使用正则

Logical DoS

  • 不是非黑即白
  • 有些case, 只有在请求量大到一定之后,才会体现
  • 分析代码中的性能瓶颈
    • 同步调用038
    • 串行逻辑
    • CPU密集型操作
  • 限流

DDoS

  • 流量治理
    • 负载均衡
    • API网关
    • CDN
  • 快速自动扩容
  • 非核心服务降级

传输层-防御中间人

image.png

HTTPS

HTTPS的一些特性

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

HTTPS- 完整性

image.png

HTTP Strict-Transport-Security(HSTS)

HSTS是HTTP严格传输安全协议,它将HTTP主动升级到HTTPS,先通过https访问页面,才能生效。

image.png

Subresource Integrity(SRI)

image.png

总结

今天通过对防御篇的学习,结合之前的攻击篇,我对Web开发时需要注意的一些安全方面的事项有了一个深刻的了解。同时也让我明白了Web开发不仅要注重功能以及用户体验,也要注意保护用户的隐私,注重使用的安全。