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

135 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第10天

假如你是一个开发者

防御篇

一、XSS

⭐ 永远不信任用户的提交内容

⭐ 不要将用户提交内容直接转换成DOM

image.png

现成工具

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

二、Same-origin Policy:同源策略

image.png

三、Content Security Policy(CSP)

⭐ 哪些源(域名)被认为是安全的

⭐ 来自安全源的脚本可以执行,否则直接抛错

⭐ 对eval + inline script 说 🙅‍

image.png

三、CSRF

image.png

token

⭐ 用户绑定:攻击者也可以是注册用户 === 可以获取自己的token

⭐ 过期时间:【前向保密】

image.png

iframe 攻击

image.png

anti-pattern

⭐ GET !== GET + POST

⭐ 不要将 更新 + 获取 逻辑放到同一个 GET 接口,这样会一石二鸟

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

image.png image.png

依赖 Cookie 的第三方服务怎么办?

image.png

Samesite vs CORS

image.png

防御 CSRF 的正确姿势

⭐ 不可能 Case by case 防御,通过中间件来解决

image.png

四、Injection

SQL

⭐ 找到项目中查询 SQL 的地方

⭐ 使用 prepared statement

image.png

beyond SQL

⭐ 最小权限原则 :❌ sudo ll root

⭐ 建立允许名单 + 过滤:❌ rm

⭐ 对URL类型参数进行协议、域名、ip等限制 :❌ 访问内网

五、DoS

Regex DoS

⭐ Code Review (❌ /(ab*)+/)

⭐ 代码扫描 + 正则性能测试

⭐ ❌ 用户提供的使用正则

Logical DoS

⭐ 不是非黑即白

⭐ 有些case,只有在请求量大到一定之后,才会体现一分析代码中的性能瓶颈

  • 同步调用
  • 串行逻辑
  • CPU密集型操作

⭐ 限流

DDoS

⭐ 流量治理

  • 负载均衡
  • API 网关
  • CDN

⭐ 快速自动扩容

⭐ 非核心服务降级

传输层——防御中间人

image.png

六、尾声

⭐ 安全无小事

⭐ 使用的依赖(npm package ,甚至是 NodeJS)可能成为最薄弱的一环

⭐ 保持学习心态

七、推荐读物

Amazon.com: Web Application Security: Exploitation and Countermeasures for Modern Web Applications: 9781492053118: Hoffman, Andrew: Books

SameSite 那些事 | 怡红院落 (imnerd.org)

关于 Web 安全突然想到的 · Issue #32 · AngusFu/diary · GitHub

What is a DDoS Attack?