青训营笔记:Web安全课都讲了什么?

129 阅读2分钟

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

作为攻击方

XSS攻击

即为跨站脚本攻击XSS(Cross Site Scripting),如果在页面中注入Script脚本代码,而开发者盲目信任用户的提交内容,则会达成攻击效果。

特点

  1. 通常从UI难以感知
  2. 窃取用户信息
  3. 绘制一些UI(如弹窗),依次来骗取其他用户一些数据

分类

  1. Stored XSS(存储型)
  2. Reflected XSS(反射型)
  3. DOM-based XSS(DOM型)
  4. Mutation-based XSS(突变型)

CSRF攻击

即为跨站域请求伪造(Cross Site Request Forgery),在用户不知情的情况下,利用用户cookie,构造指定的HTTP请求,窃取修改用户信息。

分类

  1. GET类型
  2. POST类型

Injection

分类

  1. SQL Injection:把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
  2. Command Injection:攻击者可以能够控制操作系统上的一些命令.
  3. SSRF:服务端伪造请求。

DoS

通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。

分类

  1. ReDoS:基于正则表达式
  2. Logical Dos分类:①耗时的同步,②数据库写入,③SQL join,④文件备份,⑤循环执行逻辑。
  3. DDoS;短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。

关于DDoS特点

  1. 直接访问API
  2. 任意API
  3. 消耗大量带宽

中间人攻击(传输层)

  1. 明文传输
  2. 信息篡改不可知
  3. 对方身份未验证

作为防御者

对策XSS

不要将用户提交数据直接转化为DOM

现有工具

前端:

  1. 主流框架默认防御XSS
  2. google-closure-library

服务端(Node):

DOMPurify

用户需求必须生成DOM怎么办

  1. 将string转为DOM
  2. 上传svg
  3. blob动态生成script
  4. 自定义跳转链接
  5. 自定义样式

对策CSRF

要求同源即可

CSP

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

防御措施

  1. Origin+Referrer
  2. token
  3. iframe
  4. anti-pattern
  5. 避免用户信息被携带

对策Injection

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

防御DoS

  1. 代码扫描+正则性能测试
  2. 限流

image.png 4. HTTPS