WEB开发的安全之旅|青训营笔记

99 阅读2分钟

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

WEB开发的安全之旅之两个角度看web安全

  • 假如你是一个hacker——攻击者
    • Corss-Site Scripting(xss)

      • 因为盲目使用新人用户的提交内容
      //伪代码
      string -> DOM
          document.write
          element.innerHTML = anyString;
          SSR(user_data)
      
      • 特点
        • 通常难以从UI上感知(暗地执行脚本)
        • 窃取用户信息(cookie/token)
        • 绘制UI(引诱用户点击)
      • Stored XSS(危害最大)
      • Reflexed XSS
        • 不涉及数据库
        • 从URL上攻击
      • DOM-based XSS
        • 不需要服务器的参与
        • 恶意攻击的发起 + 执行,全在浏览器完成
      • Mutation-based XSS
        • 利用了浏览器渲染DOM的特性(独特优化)
        • 不同浏览器,会有区别(按浏览器进行攻击)
    • Cross-site request forgery(CSRF)

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

      • CLI
    • Denial of Service(DoS)

      • 基于正则表达式
    • Distributed DoS(DDoS)

      • 直接访问ip
      • 任意API
      • 消耗大量带宽 - 假如你是一个开发者——防御者
    • XSS

      • 永远不信任用户提交信息
      • 不要把提交信息转化为DOM
      • 现成工具
        • 前端
          • 主流框架默认防御XSS
          • google-closure-library
        • 服务端
          • DOMPurify
    • Content-Security-Policy(CSP)

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

      //请求头
          if 伪造来源 === 异常来源
          then 限制请求来源 -> 限制伪造请求
          - Origin(字段)
              - 同源请求中,GET + HEAD 不发送
          - Referer
      
      • token
      if(请求来自合法页面)
      then(服务器接受过页面请求)
      then(服务器可以标识)
      
      • iframe攻击
        • 通过覆盖原来DOM来进行对于改变操作从而进行页面攻击
      • 避免用户信息被携带 SameSite Cookie
        • 限制的Cookie domain
        • 页面域名
      • DoS
        • Code Review
        • 代码扫描 + 正则性能测试
        • 对用户禁止使用正则
      • DDoS
        • 流量治理
          • 负载均衡
          • API网关
          • CDN
        • 快速自动扩容
        • 非核心服务降级

总结

安全无小事,但凡出了安全事情都时毁灭性的打击。大部分的安全问题都是我们的代码问题,但是有一些是有一些依赖产生,那导致了很难去维护。Try to be better