• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sunshinev
V2EX  ›  程序员

用 antd pro 会暴露前端的代码么?

  •  
  •   sunshinev ·
    sunshinev · May 19, 2020 · 4721 views
    This topic created in 2226 days ago, the information mentioned may be changed or developed.

    因为有些页面需要登录之后才可以访问的

    如果使用 antd pro 这种打包好的,实际上未登录也可以从 js 中看到页面元素吧

    31 replies    2020-05-20 11:59:11 +08:00
    Latin
        1
    Latin  
       May 19, 2020
    webpack 打包就已经混淆过一遍,不放心自己再加混淆就好。
    meteor957
        2
    meteor957  
       May 19, 2020   ❤️ 2
    前端代码本来就是暴露的
    AngryMagikarp
        3
    AngryMagikarp  
       May 19, 2020
    页面是暴露的,但接口不是呀。
    shintendo
        4
    shintendo  
       May 19, 2020
    没看懂你在问什么
    是怕暴露代码还是怕暴露页面数据?
    数据是从接口拿的,接口做好鉴权就行了,前端从来不做安全也做不了安全,前端权限控制做的是体验
    代码的话,不说前端代码有什么价值,那跟登录不登录又有什么关系?
    anzu
        5
    anzu  
       May 19, 2020
    会的,可以做成多页应用,登录页面和实际后台分别部署。
    easonHHH
        6
    easonHHH  
       May 19, 2020
    前端无秘密
    请求页面的时候,登陆成功(鉴权)才返回页面,这是后端做的事情吧
    sunshinev
        7
    sunshinev  
    OP
       May 19, 2020
    @shintendo 你没理解啊,以前后台管理系统,页面都是后台渲染的,所有的鉴权操作在请求的 middleware 层就做了,直接拦截了。

    那就是按照你说的,前端代码没有保护的价值
    bsg1992
        8
    bsg1992  
       May 19, 2020
    你前端代码就是暴露在外的,顶多就是混淆一下。
    GDC
        9
    GDC  
       May 19, 2020
    会的,一般都是打包成一个 js,花点功夫就可以在 js 里看到等后面页面的 dom 元素、字段名称、甚至和后端的交互逻辑,尤其是那些预置了提示信息的
    shintendo
        10
    shintendo  
       May 19, 2020
    @sunshinev 比方说后台有个产品管理页面,只允许登录用户查看,你想保护的是这个页面的样子(左边一个导航栏上面两个搜索框下面一个翻页表格),还是这个页面的数据内容(产品名称产品价格产品规格)?
    GDC
        11
    GDC  
       May 19, 2020
    楼上好多人都不明白楼主在说啥,前后端不分离的情况,html 是服务端渲染的,一般的逻辑是判断未登录后就不渲染页面了(跳转到登录页),不会暴露业务信息。

    除了楼上 @anzu 说的做成多页,也可以做组件懒加载。
    heyjei
        12
    heyjei  
       May 19, 2020
    是的,没办法,用中间人技术,可以直接把 JS 代码修改并替换,把关键的前端的权限校验代码给去掉。

    所以这权限验证,后端不可省。话说这权限验证本来就是后端的事啊。为了用户体验,前端才逐渐的加入了权限的验证。
    GDC
        13
    GDC  
       May 19, 2020
    @GDC 更正 #11 的想法:

    懒加载也能在未登录的情况下找到 js 文件,从而推断出页面业务和逻辑,这个方法不可取,还是多页应用比较靠谱。
    SingeeKing
        14
    SingeeKing  
    PRO
       May 19, 2020
    为什么没有人说 SSR
    dartabe
        15
    dartabe  
       May 19, 2020
    SSR 可以吧?
    faceRollingKB
        16
    faceRollingKB  
       May 19, 2020
    这种功能一般需要框架提供,比如说 ng 路由的 guard 可以实现这种权限控制,原理就是打包时就把代码分开打包,获得权限后才会去加载脚本,vue 的话目前只用到懒加载,还没试过 beforeEach 能不能实现这种权限控制,不知道有没有人试过
    lancelock
        17
    lancelock  
       May 19, 2020
    不是有混淆吗?不管用吗
    shintendo
        18
    shintendo  
       May 19, 2020
    @SingeeKing 如果我的理解没错的话,ssr 也只有首屏是服务端渲染的
    zhuweiyou
        19
    zhuweiyou  
       May 19, 2020
    数据又不是写死在 JS 里的。
    你考虑这些,没有意义。
    linZ
        20
    linZ  
       May 19, 2020
    不可以,明显你没有切换页面,然后检查元素。正常的话,只会渲染当前页面的内容,而不会
    linZ
        21
    linZ  
       May 19, 2020
    删掉上一条。可以看,但是成本值当么,还不如直接拉开发人员吃吃饭套套近乎呢。 ps:v2ex 真是拉中拉,连个回复删除的功能都没有。
    Vegetable
        22
    Vegetable  
       May 19, 2020   ❤️ 3
    这么说
    如果有你的后端接口文档,不需要你的服务器,用代理+mock 数据,哪一个页面都可以随便进。只代理关键请求也很可能骗过前端的权限验证,这些关键接口往往就是登录开始的前几个请求,非常好定位。
    faceRollingKB
        23
    faceRollingKB  
       May 19, 2020
    @Vegetable 是这个道理,如果攻击者劫持了一个肉鸡所有的信息,那攻击者完全可以模仿这个用户,而且服务端也没有任何办法吧,所以才需要短信、邮件等其他手段做一个终极验证
    sunshinev
        24
    sunshinev  
    OP
       May 19, 2020
    @Vegetable 对,就是这个问题,所以现在我们业内有没有好的解决方案
    Elephant696
        25
    Elephant696  
       May 19, 2020
    是可以看到。

    关键只看到前端代码也没什么意义啊,难道是因为这些代码里有什么有价值的东西怕泄露吗
    namelosw
        26
    namelosw  
       May 19, 2020
    @sunshinev 你这个需求不就是普通的登陆就行了嘛?没登陆啥也不能看,登陆了只能看跟他相关的资源。

    要紧的都放后端,不要紧的可以放前端。
    musi
        27
    musi  
       May 19, 2020
    页面不就是给人看的么?关键的是数据?
    jinliming2
        28
    jinliming2  
       May 19, 2020
    dynamic import,惰性按需加载,页面需要显示的时候才加载,webpack 上配一下就行。code split
    lihongming
        29
    lihongming  
       May 20, 2020 via iPhone
    没用过 antd pro,但前端的权限验证只是为了用户不被不需要的页面打扰,并不是为了禁止他看。

    你要是实在需要保密一些信息(比如 API 地址、字段名等),可以将这些信息在受保护的 API 中返回,无权的人就看不到了。
    cw2k13as
        30
    cw2k13as  
       May 20, 2020
    js 会混淆的,还有页面是动态的会懒加载 js,有权限才会拉取 js 渲染页面,再说了页面有接口,后端也会判断权限
    myCupOfTea
        31
    myCupOfTea  
       May 20, 2020
    @jinliming2 没用,又没权限验证机制,懒加载照样可以拿,ssr 也不行 ssr 只是首屏渲染
    楼主这个想法要实现首先,路由不能放前台
    建议后台模版渲染完事,路由也放后台就 ok 呢
    但是前端代码确实没啥价值,压缩过之后,鬼才看的懂(看懂局部当然没啥问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2869 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 15:16 · PVG 23:16 · LAX 08:16 · JFK 11:16
    ♥ Do have faith in what you're doing.