WEB安全学习|青训营笔记

103 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第11天

一、本堂课重点内容:

7a91c65ff91e3c10f4147db3dfd3f6e.jpg

二、详细知识点介绍:

  • XSS —— 跨站脚本攻击

    • 攻击

      • 后果

        用户隐私泄露

      • 缘由

        1、盲目信任用户提交内容,没有过滤内容

        2、string -> DOM

      • 特点

        1)通常难以从UI上感知(暗地执行脚本)

        2)窃取用户信息(cookie / token)

        3)绘制UI(例如弹窗) ,诱骗用户点击/填写表单

      • 类型

        1)存储型 —— Stored XSS

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

        2) 反射性 —— Reflected XSS

           不涉及数据库 
           
           从URL上完成攻击
        

        3)基于DOM —— DOM-based XSS

            不需要服务器的参与
            
            恶意攻击的发起与执行全部在浏览器完成
            
            (执行环境发生变化,URL)
        

        反射性XSS与基于DOM XSS对比,区别在于注入脚本的地方,前者于服务端注入,后者于浏览器端完成

        4)基于MUtation —— Mutation-based XSS

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

      不信任用户的提交内容+不将用户提交的内容直接转换为DOM

      • 现成工具

        前端

        主流框架(VUE)默认防御XSS
        
        google-closure-library
        

        服务端(Node)

        DOMPurify
        
      • 强行转换内容的补救操作(String -> DOM)

        1)对string进行转译

        2)上传svg时进行扫描

        3)尽量拒绝用户自定义跳转,做好内容过滤

  • CSRF —— 跨站伪造请求

    • 攻击

      • 特点 构造任意请求

      1)在用户不知情的前提下

      2)利用用户权限(cookie)

      3)构造指定HTTP请求,窃取或修改用户敏感信息

    • 防御

      1)限制Origin,验证header字段

      if 伪造请求=异常来源
      then 限制请求来源→限制伪造请求
      - Origin
           -同源请求中,GET + HEAD不发送
      -Referer
      

      2)token令牌机制

      标记token(与具体用户绑定且有过期时间)
      

      3)SameSite Cookie

      限制
          Cookie domain
          页面域名
      
  • Injection

    • 攻击

      • 类型

      SQL Ingection

      命令行(CLI)

      系统命令(OS command)

      SSRF(不是injection但是原理类似)

    • 防御

      • 以SQL为例

        找到项目中查询SQL的地方

        使用prepared statement(即提前将SQL写好)

      • 具体操作

        最小权限原则

        不给root权限
        

        白名单机制

        只允许指定命令去进行
        

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

  • DoS —— 服务拒绝

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

    • 攻击

      • 类型

        ReDoS —— 基于正则表达式的DoS

        基于贪婪匹配的回溯行为
        
        服务器响应时间大大延长,接口吞吐量明显降低,相应用户的请求次数降低
        

        DDoS(最常见)

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

        具体特点:

        1)耗时的同步操作
        
        2)数据库写入
        
        3SQL join
        
        4)文件备份
        
        5)循环执行逻辑
        

        主要目的:消耗带宽

    • 防御

      正则表达式

      完善code review
      
      代码扫描+正则性能测试
      
      拒绝使用用户提供的正则
      

      DDoS

      1、流量治理(过滤)
      
          1)负载均衡
          
          2)API网关
      
      2、抗量
          1)前置CDN
          
          2)快速自动扩容
          
          3)非核心服务降级
      
  • 中间人攻击

    • 攻击

      窃取信息

      修改请求、返回

      • 缘由

        明文传输

        信息篡改不可知

        未验证对方身份

    • 防御 —— 中间人

      HTTPS

      特性:
      
          可靠性:加密(避免明文传输)
          
          完整性:MAC验证(确保信息未被篡改)
          
          不可抵赖性:数字签名(验证对方身份)
      

      HSTS —— 将HTTP主动升级到HTTPS

      缺点:需要先有一次HTTPS请求