纯后端码农,前端小白,好奇咨询,对于一个敏感应用系统,适合使用 vue.js (浏览器端渲染)+REST 架构吗?
个人想到的两个风险:
第一,作为单页面应用( SPA ),每个人都能拿到全量的前端代码(哪怕是加密后的)。如果敏感应用系统具有多级别、多角色管理功能,使用者通过对源代码进行反编译,或者通过挡板接口返回假数据的方式,低权限级别用户可以获知高级别用户的操作功能。
第二,前后端分离架构下,通过反编译理论上可以获知应用系统的全部后端接口,甚至连接口调用参数理论上都能从前端源码中得知。
所以,这种情况下还适合使用前后端分离+浏览器端渲染架构吗,有没有啥对应的防护措施?
1
ztstillwater 46 天前 via iPhone
这得多敏感才值得对方搞反编译?
|
![]() |
2
mawenjian OP @ztstillwater 比如金融应用系统,每天流水大几十亿那种
|
3
renmu 46 天前 via Android
你指得是内部人员分析?
就算知道了接口和参数又能怎么样 |
![]() |
4
duanxianze 46 天前
这和前端用啥有啥关系,你不用前后端分离你说的这些问题就不存在了吗?再说了,前后端分离也是可以按需加载代码啊
|
5
xedsurf 46 天前 via iPhone
被逆向好像是前端都无法避免的问题,调试台里面能看到所有网络活动,想知道参数还是很容易的。重要的是后端要做好保护机制吧
|
6
ochatokori 46 天前 via Android
你不同权限的页面可以分文件出去,请求静态文件时带上令牌做鉴权就可以了
|
![]() |
8
mawenjian OP @duanxianze 当然,如果不用前后端分离,可能只有一个页面加载以后,才知道下一步提交的 url 是多少,这样很难拿到接口的全集,变相增加了攻击难度。
@xedsurf 是的,对后端的要求更高了,暴露的风险也变大了。 @ochatokori 好主意。简单搜了下,这样单页面应用就变成了多页面应用了吧?在做前端页面的时候,就需要结合所属角色或者所属功能放到不同的单页面中去,或者更极端点儿,每个页面一组文件;还要在服务器增加鉴权等配置,需要前后端结合。如果访问量不是很大,这种场景是不是加一层 nodejs 做服务端渲染更合适一些? |
![]() |
9
gzyguy 46 天前
前端就算量子加密也没办法不暴露你的 api 接口。
|
![]() |
12
duanxianze 45 天前
@mawenjian 你为啥会觉得 url 是个很重要的东西?我开发过的金融 APP 从头到尾就一个接口,把实际请求的路径,参数,token 统一加密后传输后台,你看到的就是一个接口
|
13
ochatokori 45 天前 via Android
@mawenjian #8 SPA 啊,SPA 又不是不能懒加载页面,你说的单页面是业务上的一个页面?
|
![]() |
14
letitbesqzr 45 天前
说安全的 完全没相关经验 . 这样做 一方面你会暴露出所有的接口 , 包括部分用户不能请求到的接口地址, 比如你只有普通用户权限, 但你通过代码分析能看到 商户的接口.
特别是如果把后台都集合在一起, 别人分析代码后,简单构造下本地缓存,就能跳到后台去大致看看 有些什么功能 虽然不能获取到实际数据, 但是能大概浏览下你后台有些什么功能,也是很危险的. |
![]() |
15
mawenjian OP @duanxianze
( 1 )所谓一个接口,也不过是在请求参数中用某一个参数做区分和路由选择,本质上跟多个 url 的接口设计没什么本质区别。 ( 2 )请求参数在浏览器端生成,数据结构一目了然。 ( 3 )加密只能是针对数据传输过程,请求数据在浏览器端生成,拿到明文数据轻而易举。 @ochatokori 是的,“更极端点儿,每个 ui 页面是一个单页面应用程序……”。即使是懒加载,普通用户也能拿到超级用户的 UI 代码吧?除非按照角色分别打包,相互拿不到其他角色使用的代码。但这也不科学,基本属于和角色强绑定的硬编码了。 @letitbesqzr 是的,虽然只是看到前端功能,但也算是多半个 luoben 了。后台服务根据前端 UI 和请求接口反推,后台什么样子,也能推出个七七八八了。 |
![]() |
16
duanxianze 45 天前
@mawenjian 1 ,接口地址一样可以是动态的,或者登录后获取,和你不分离没什么不同
2 你分不分离都一样 3 更和分不分离没区别 4 再重复一遍,分离一样可以做到完全异步和动态的加载代码,完全可以个性化,不存在拿到全部代码 |