V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sunshinev
V2EX  ›  程序员

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

  •  
  •   sunshinev ·
    sunshinev · 2020-05-19 14:49:42 +08:00 · 4024 次点击
    这是一个创建于 1650 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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