业务逻辑不放在前端是因为前端代码谁都能看见吗

116 天前
 pureGirl
6553 次点击
所在节点    程序员
49 条回复
RogerL
116 天前
@pureGirl 前端数据不可信,是因为你也不知道是用户返回有没有被篡改过,是怎么调用的,指不定人家直接调你接口呢?
Meld
116 天前
客户端随便模拟的,所以关键逻辑和校验肯定是放服务端的
pkoukk
116 天前
对啊,原本 VIP 用户才能看见 xx 内容的逻辑在后端
你现在移到前端去,用户拿油猴把你的 js 劫持一改,就变 vip 了
Ayanokouji
116 天前
@Joey2022 #7 请问一下,帧同步的话,逻辑不就是放在前端吗。这种确实会产生外挂,但是还是很多游戏用。
leoQaQ
116 天前
@rimworld #2 一直写 B 端前端,我一般都是要做数据验证的,不管后端做不做二次验证
pvnk1u
116 天前
不光是能看见的问题,更是可以被篡改的问题,直接调接口的操作前面的回答已经有人说了,还有种操作是在前台写的判断甚至可以直接控制台断点把数据改掉控制代码执行的分支
yh7gdiaYW
116 天前
我们有两个场景会把部分业务操作放到前端,一种是编辑器比如在线脑图;另一种是基于用户自身之前上传的数据的复杂统计分析,非常吃 CPU 放服务器压力太大。其实就是必须是用户自己的数据,随便怎么折腾
paradoxs
116 天前
在游戏这一块,把数据放后端,不能完全避免防作弊。

一个强力的前端防作弊系统,比单纯的数据放后端要有效太多。游戏启动的时候,还是得加驱动,扫硬盘,各种扫。
lyxxxh2
116 天前
@leoQaQ
我也是 b 端,但是跟你相反。

在少量的业务逻辑发现了大量的验证。
前端经常乱传数据。
整得我每个数据都要验证下。
leoQaQ
116 天前
@lyxxxh2 哈哈哈哈,所以喜欢你这种后端
yosoroAida
116 天前
像做微信小程序的,你修改过前端的代码,重新发布要经过微信的审核。而后端代码修改完就可以立马重新发布
asdhak
116 天前
后端代码自主可控,前端就不行了。前端面向客户,主要职责应该是用户信息输入,给客户提供流畅美观的使用体验
chenliangngng
116 天前
不是

后端是处理数据的,所以必须知道业务逻辑,前端是处理交互和数据展示的,并不需要完整的了解业务逻辑。这种分工是效率最大化的产物
delta86
116 天前
交互敏感的放前端,数据敏感的放后端
treblex
116 天前
不管前端怎么写,后端都要做一遍的,不能说前端禁用了按钮,那我后端就直接把接收到的数据存库
我的面试水平只够我遇到这种后端,放弃了😮‍💨
qcbf111
116 天前
@Ayanokouji 同步是同步,验证合法性是另一回事。
其实游戏核心部分不太像传统业务逻辑开发人员前后端分的那么明确。
现在普遍做法是 帧同步世界运行时客户端自己计算,结束结算时服务端再运行一次整个战斗过程 验证合法性并且得到战斗过程数据(比如当前有任务击杀 3 个小兵)。
前端的人写完战斗系统和各种 buff 技能会编译为.dll 和.so 分别前后端调用,也有公司是前端把整个战斗服写完作为 stateless 的战斗集群,游戏服 rpc 和某个战斗实例交互。(之所以叫前端是因为这部分人编制在前端,也有从拼 UI 业务的前端深度晋升写战斗的)。
Ayanokouji
116 天前
@qcbf111 感谢答疑
niubiman
116 天前
主要是前端"不可信", 即使一些业务在和用户的交互过程中需要进行业务处理, 后端也必须再处理一遍, 就 b/s 模型业务安全来说后端的安全性比前端的安全性高非常多, 业务数据不能依赖于前端, 否则系统将会变成万人骑
thinkershare
116 天前
所有业务逻辑必须在后端实现一遍,而且很多业务逻辑是不希望终端用户知道的,你当然可以在前端重复实现一遍逻辑,但后端必然再实现一套,因为任何时候前端的最终用户都能跳过你的前端逻辑,直接调用后端接口。另外你要注意区分展示和业务,展示是可以变化的,业务流程的逻辑是抽象的业务流程校验。另外用户操作的数据有时候不止会影响自己,还会影响平台和第三方的利益,因此用户自己操作自己的数据的时候也必须符合系统固有的逻辑状态转换。
niubiman
116 天前
@chendy 算, 但是按钮可不可用可不是全由前端说了算, 首先得从后端拿到权限码前端才能识别按钮可不可用, 然后按钮后面的数据或者功能所需的接口也需要后端进行一次权限检查.

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

https://ex.noerr.eu.org/t/1113995

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

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

© 2021 V2EX