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

97 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第13天,下面跟我一起看看青训营WEB安全防御篇部分讲了什么吧~

两个角度看WEB安全

  • 假如你是一个hacker --攻击
  • 假如你是一个开发者 --防御

防御篇

1.XSS

1)原则

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

2)XSS——现成工具

前端

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

服务端(Node)

  • DOMPurify

2.Same-origin Policy(同源策略)

  • 协议
  • 域名
  • 端口号

3.Content Security Policy(CSP)

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

4.CSRF 的防御

   if 伪造请求 === 异常来源

   then 限制请求来源 -> 限制伪造请求

   请求头部

       Origin

           同源请求中,GET + HEAD 不发送

       Referrer

5. CSRF —— token

除了 Origin + Referrer 其他判断【请求来自于合法来源】的方式

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

6.CSRF anti-pattern

GET !== GET + POST

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

1)限制的是:

  1. Cookie domain
  2. 页面域名

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

  • 内嵌一个×站播放器,识别不了用户登录态,发不了弹幕
Set-Cookie: SameSite=None;Secure;

8.SameSite vs CORS

SameSite

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

CORS

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

9.Regex DoS

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

10.Logical DoS

  • 不是非黑即白

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

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

10.DDoS

  • 流量治理

    • 负载均衡(过滤)
    • API 网关(过滤)
    • CDN(抗量)
  • 快速自动扩容(抗量)

  • 非核心服务降级(抗量)

11.防御Injection

  • 找到项目中查询SQL的地方
  • 使用prepared statement
PREPARE q FROM 'SELECT user FROM users WHERE gender = ?';
SET @gender = 'female';
EXECUTE q USING @gender;
DEALLOCATE PREPARE q;
Injection beyond SQL
  • 最小权限原则

    • sudo ll root
  • 建立允许名单+过滤

    • rm
  • 对URL类型参数进行协议、域名、ip等限制

    • 访问内网

12.HTTPS 的特性

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