敏感系统适合采用类似 Vue.js 这种单页面应用技术吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mawenjian
V2EX    编程

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

  •  
  •   mawenjian 2024-07-23 18:38:53 +08:00 via iPhone 2019 次点击
    这是一个创建于 443 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    个人想到的两个风险:

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

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

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

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

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

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

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

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

    @letitbesqzr 是的,虽然只是看到前端功能,但也算是多半个 luoben 了。后台服务根据前端 UI 和请求接口反推,后台什么样子,也能推出个七七八八了。
    duanxianze
        16
    duanxianze  
       2024-07-24 13:10:19 +08:00
    @mawenjian 1 ,接口地址一样可以是动态的,或者登录后获取,和你不分离没什么不同
    2 你分不分离都一样
    3 更和分不分离没区别
    4 再重复一遍,分离一样可以做到完全异步和动态的加载代码,完全可以个性化,不存在拿到全部代码
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1148 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:27 PVG 07:27 LAX 16:27 JFK 19:27
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86