字节跳动青训营--前端day10


前言

仅以此文章记录学习。


一、web开发安全 - 攻击

1. Cross-Site Scripting(XSS)

跨站脚本攻击
是针对用户层面的攻击。

恶意攻击者会往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!

特点:

  • 通常难以从 UI上感知(暗地执行脚本
  • 窃取用户信息 (cookie/token)
  • 绘制 UI(例如弹窗),诱骗用户点击/填写表单

1.1 存储型(Stored Xss)

持久化

  • 恶意脚本被存在数据库中
  • 用户访问页面 -> 读数据 === 被攻击
  • 危害最大,对全部用户可见

容易造成蠕虫,盗窃cookie

1.2 反射型(Reflect Xss)

非持久化

  • 不涉及到数据库
  • 从URL上攻击,一般容易出现在搜索页面

反射型XSS大多数是用来盗取用户的Cookie信息

1.3 DOM型(DOM Xss)

不经过后端

  • 不需要服务器的参与
  • 恶意攻击的发起+执行,全在浏览器完成
document.referer
window.name
location
innerHTML
documen.write

可能触发DOM型XSS的属性

1.4 Mutation-based XSS

  • 利用了浏览器染 DOM的特性(独特优化)
  • 不同浏览器,会有区别(按浏览器进行攻击)

2. Cross-Site Request Forgery(CSRF)

跨站请求伪造

  • 在用户不知情的前提下
  • 利用用户权限(cookie)
  • 构造指定HTTP请求,窃取或修改用户敏感信息

3. SQL Injection

SQL注入
在这里插入图片描述

4. Server-Side Request Forgery(SSRF)

服务端伪造请求
攻击者伪造服务端的请求发起攻击,借由服务端为跳板来攻击目标系统

5. Denial of Service(DoS)

拒绝服务攻击

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

6. Distributed DoS(DDoS)

分布式拒绝服务攻击

攻击特点:

  • 直接访问IP
  • 任意API
  • 消耗大量带宽(耗尽)

短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。

二、web开发安全 - 防御(开发者注意)

1. XSS防御

永远不要信任用户提交的内容,不要将用户提交的内容直接转换成DOM(可以把他当作字符串对待)

1.1 现成工具

前端:

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

服务端 (Node):

  • DOMPurify

1.2 注意点

  1. 尽量不要动态生成DOM
  2. 若有String转换为DOM操作,需要提前将String进行转译
  3. 如果允许用户上传SVG文件/图片,则需要对其进行一次扫描(SVG文件内是允许嵌套script代码)
  4. 尽量不要做让用户自定义跳转这类行为,如果要做得需要做好过滤(允许自定义跳转的话实际上会传递js代码)
  5. 如果允许用户自定义样式,则需要对能够附带URL的属性进行过滤(Background:url(xxx/xxx.png))

1.3 Content Security Policy(CSP)

内容安全策略

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

2. CSRF防御

在这里插入图片描述
判断浏览器是否同源

要求用户带上Token去请求接口
在这里插入图片描述

避免携带 SameSite Cookie

在这里插入图片描述

3. injection 防御

3.1 sql injection

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

3.2 injection beyond SQL

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

4. DOS 防御

  • 完善代码Code Review的方式,避免写出贪婪匹配的方式(/(ab*)+/)
  • 代码扫描 + 正则性能测试
  • 拒绝用户提供的正则表达式

4.1 DDOS

  • 流量控制(过滤):负载均衡,API网关,CDN
  • 快速自动扩容,非核心服务降级(扛量)

5. 通过传输层防御(HTTPS)

HTTPS:HTTP+TLS

特点:

  • 可靠性:加密(拒绝明文)
  • 完整性:MAC验证(防篡改)
  • 不可抵赖性:数字签名 (验证身份)

完整性:
在这里插入图片描述
数字前面:
在这里插入图片描述

HTTP3(QUIC)也内置了TLS1.3