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

117 天前
 mawenjian

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

个人想到的两个风险:

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

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

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

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

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

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

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

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

@letitbesqzr 是的,虽然只是看到前端功能,但也算是多半个 luoben 了。后台服务根据前端 UI 和请求接口反推,后台什么样子,也能推出个七七八八了。
duanxianze
116 天前
@mawenjian 1 ,接口地址一样可以是动态的,或者登录后获取,和你不分离没什么不同
2 你分不分离都一样
3 更和分不分离没区别
4 再重复一遍,分离一样可以做到完全异步和动态的加载代码,完全可以个性化,不存在拿到全部代码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1059530

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX