大厂如何“隐藏”前端权限数据

大厂如何“隐藏”前端权限数据

大厂如何“隐藏”前端权限数据

看起来“没返回权限”,其实只是拆分、压缩、加密后藏在别处。

  1. 角色 + 静态映射

    • 后端只返回 role: "vip"

    • 前端内置映射

      
      const ROLE_ROUTES = {
      
        vip: ['/home', '/vip-only'],
      
        guest: ['/home']
      
      }
      
      
  2. 加密菜单树

    • 接口返回

      
      { "menu": "AES加密后的字符串==", "ts": 1690000000 }
      
      
    • 前端预埋 key 解密后生成路由

  3. 路由 ID 列表

    • 后端返回无意义 ID

      
      { "allowedPages": ["p_1001", "p_1005"] }
      
      
    • 前端映射

      
      const PAGE_MAP = {
      
        p_1001: { path: '/calendar', component: Calendar },
      
        ...
      
      }
      
      
  4. SSR 直出 HTML

    • 服务端根据权限直接拼接好菜单 HTML,前端无单独权限接口
  5. JWT payload 抽象字段

    • 使用无业务含义字段名

      
      { "a": ["r1","r3"], "b": 1 }
      
      

安全底线

无论前端如何隐藏,真正的权限校验仍由后端兜底


本文由萧兮的博客原创发布,欢迎转载,转载务必保留原文链接。

萧兮的博客https://www.20010515.xyz · 原文:https://www.20010515.xyz/posts/1d132913-85f9-4d80-8083-b4f9f765f421