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

敏感系统适合采用类似 Vue.js 这种单页面应用技术吗?

  •  
  •   mawenjian · 141 天前 via iPhone · 1569 次点击
    这是一个创建于 141 天前的主题,其中的信息可能已经有所发展或是发生改变。

    纯后端码农,前端小白,好奇咨询,对于一个敏感应用系统,适合使用 vue.js (浏览器端渲染)+REST 架构吗?

    个人想到的两个风险:

    第一,作为单页面应用( SPA ),每个人都能拿到全量的前端代码(哪怕是加密后的)。如果敏感应用系统具有多级别、多角色管理功能,使用者通过对源代码进行反编译,或者通过挡板接口返回假数据的方式,低权限级别用户可以获知高级别用户的操作功能。

    第二,前后端分离架构下,通过反编译理论上可以获知应用系统的全部后端接口,甚至连接口调用参数理论上都能从前端源码中得知。

    所以,这种情况下还适合使用前后端分离+浏览器端渲染架构吗,有没有啥对应的防护措施?

    16 条回复    2024-07-24 13:10:19 +08:00
    ztstillwater
        1
    ztstillwater  
       141 天前 via iPhone
    这得多敏感才值得对方搞反编译?
    mawenjian
        2
    mawenjian  
    OP
       141 天前 via iPhone
    @ztstillwater 比如金融应用系统,每天流水大几十亿那种
    renmu
        3
    renmu  
       141 天前 via Android
    你指得是内部人员分析?
    就算知道了接口和参数又能怎么样
    duanxianze
        4
    duanxianze  
       141 天前
    这和前端用啥有啥关系,你不用前后端分离你说的这些问题就不存在了吗?再说了,前后端分离也是可以按需加载代码啊
    xedsurf
        5
    xedsurf  
       141 天前 via iPhone
    被逆向好像是前端都无法避免的问题,调试台里面能看到所有网络活动,想知道参数还是很容易的。重要的是后端要做好保护机制吧
    ochatokori
        6
    ochatokori  
       141 天前 via Android
    你不同权限的页面可以分文件出去,请求静态文件时带上令牌做鉴权就可以了
    mawenjian
        7
    mawenjian  
    OP
       141 天前 via iPhone
    @renmu 挨个接口搞攻击啊,只要试的足够多,总有有漏洞的
    mawenjian
        8
    mawenjian  
    OP
       141 天前 via iPhone
    @duanxianze 当然,如果不用前后端分离,可能只有一个页面加载以后,才知道下一步提交的 url 是多少,这样很难拿到接口的全集,变相增加了攻击难度。

    @xedsurf 是的,对后端的要求更高了,暴露的风险也变大了。

    @ochatokori 好主意。简单搜了下,这样单页面应用就变成了多页面应用了吧?在做前端页面的时候,就需要结合所属角色或者所属功能放到不同的单页面中去,或者更极端点儿,每个页面一组文件;还要在服务器增加鉴权等配置,需要前后端结合。如果访问量不是很大,这种场景是不是加一层 nodejs 做服务端渲染更合适一些?
    gzyguy
        9
    gzyguy  
       140 天前
    前端就算量子加密也没办法不暴露你的 api 接口。
    mawenjian
        10
    mawenjian  
    OP
       140 天前 via Android
    @gzyguy 是的,所以我觉得前后端分离架构对于某些敏感系统其实并不太适用。
    gzyguy
        11
    gzyguy  
       140 天前
    @mawenjian 未分离比分离是好一些,一些需要加密的逻辑不暴露到网页上,但网页自己处理的逻辑代码是藏不住的。
    duanxianze
        12
    duanxianze  
       140 天前
    @mawenjian 你为啥会觉得 url 是个很重要的东西?我开发过的金融 APP 从头到尾就一个接口,把实际请求的路径,参数,token 统一加密后传输后台,你看到的就是一个接口
    ochatokori
        13
    ochatokori  
       140 天前 via Android
    @mawenjian #8 SPA 啊,SPA 又不是不能懒加载页面,你说的单页面是业务上的一个页面?
    letitbesqzr
        14
    letitbesqzr  
       140 天前
    说安全的 完全没相关经验 . 这样做 一方面你会暴露出所有的接口 , 包括部分用户不能请求到的接口地址, 比如你只有普通用户权限, 但你通过代码分析能看到 商户的接口.

    特别是如果把后台都集合在一起, 别人分析代码后,简单构造下本地缓存,就能跳到后台去大致看看 有些什么功能 虽然不能获取到实际数据, 但是能大概浏览下你后台有些什么功能,也是很危险的.
    mawenjian
        15
    mawenjian  
    OP
       140 天前 via Android
    @duanxianze
    ( 1 )所谓一个接口,也不过是在请求参数中用某一个参数做区分和路由选择,本质上跟多个 url 的接口设计没什么本质区别。
    ( 2 )请求参数在浏览器端生成,数据结构一目了然。
    ( 3 )加密只能是针对数据传输过程,请求数据在浏览器端生成,拿到明文数据轻而易举。

    @ochatokori 是的,“更极端点儿,每个 ui 页面是一个单页面应用程序……”。即使是懒加载,普通用户也能拿到超级用户的 UI 代码吧?除非按照角色分别打包,相互拿不到其他角色使用的代码。但这也不科学,基本属于和角色强绑定的硬编码了。

    @letitbesqzr 是的,虽然只是看到前端功能,但也算是多半个 luoben 了。后台服务根据前端 UI 和请求接口反推,后台什么样子,也能推出个七七八八了。
    duanxianze
        16
    duanxianze  
       140 天前
    @mawenjian 1 ,接口地址一样可以是动态的,或者登录后获取,和你不分离没什么不同
    2 你分不分离都一样
    3 更和分不分离没区别
    4 再重复一遍,分离一样可以做到完全异步和动态的加载代码,完全可以个性化,不存在拿到全部代码
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   882 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:01 · PVG 04:01 · LAX 12:01 · JFK 15:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.