表单提交,测试时发现重复点击后,造成后台数据重复问题,到底是前端的工作,还是开发人员的工作?

2020-10-28 11:09:44 +08:00
 Trinity888

前端开发人员:只负责静态界面、表单校验及相应界面跳转、交互效果的实现

后台开发人员:负责业务逻辑及数据动态内容开发

现测试人员发现:表单提交时,重复点击多次提交按钮,造成数据重复问题。

现在分析:

1 ) 表单提交按钮控制,谁来做?

是前端没有把界面验证做好(例如按钮只能点击一次),还是后台开发没有控制?

2 ) 什么阶段来验证?

前端开发完成后,没有验证测试通过,还是后台开发人员全部完成后验证?
11120 次点击
所在节点    程序员
115 条回复
fengmumu
2020-10-28 14:30:41 +08:00
说到校验顺序,不是开发完成,联调,功能实现了,给产品看,产品确定完成度,然后交由测试做测试,看是否有隐藏的 bug 和不兼容的情况
另外 非要说问题,产品规划里这个说明咩有,前端自测,后端联调,都跑不了,毕竟所有相关的都没有考虑这个问题,然后交互是否设计了提交时的样式。。。
glacial
2020-10-28 14:31:41 +08:00
作为一个老司机 我可以明确的告拆你 这种事 就是谁能拍板 就听谁的 你们后端大佬说了算 那完全可以 让前端改,从技术实现上来说 前端好改 只要提交后加个 disable 就可以了, 当然有人说了 不行 你们后端也得加 对此 我做过多年的项目经验来讲认为 可以有 但没必要, 你看看 支付宝 微信 的接口会给你加这个吗,你重复调不也会产生重复数据。你让他们给你改试试
Sapp
2020-10-28 14:32:59 +08:00
前端最好做,后端一定要做
前端做了也改变不了其他人调用你的接口出现这个问题,除非你打算让所有的前端包括客户端都做
后端做了一定能解决这个问题,哪怕前端一点都不做
fatpower
2020-10-28 14:43:10 +08:00
前端后端都要做
elfive
2020-10-28 14:44:42 +08:00
避免重复提交,请使用幂等
exmario
2020-10-28 14:57:40 +08:00
肯定是后端的锅,前端只管提示,后端管处理
DOLLOR
2020-10-28 14:59:28 +08:00
重复提交问题是后端的锅。
前端只负责提醒用户状态,不负责处理重复提交问题。
Thresh
2020-10-28 15:02:42 +08:00
前端要做:尽量减少到后端的可能,一来是有效减低幂等问题的可能,二来在高 qps 场景下避免重复点击可以给服务端适当减负
后端要做:这 tm 本来就是你自己幂等的问题。你 tm 还不做?
zaul
2020-10-28 15:09:59 +08:00
用户的锅,谁 TM 这么脑瘫连续点提交干什么?
axex
2020-10-28 15:37:53 +08:00
后端的锅比较大
wangritian
2020-10-28 15:39:08 +08:00
前端方案:按钮点击后禁用,response 回来了解禁
后端方案:csrf_token 需要放在 session 而非 cookie,并且用分布式锁确保 session 的读取和更新两步操作具有原子性
攻击方案:先抓取页面,获得 csrf_token,然后 post,无限循环
结论:前端解决重复提交的成本低,后端的 csrf_token 继续放 cookie,在防火墙级别封掉过大流量的 IP,然后禁用攻击者账户,清理垃圾数据
a719031256
2020-10-28 15:40:49 +08:00
后端的锅,居然没做数据重复判断,php ?
zhuweiyou
2020-10-28 15:44:18 +08:00
后端必须做,

前端是交互问题, 比如 disable 什么的
哪怕前端不做, 后端也应该返回错误提示
wangxiaoaer
2020-10-28 15:52:03 +08:00
@otakustay 额,csrf 表示不背这个锅。
charlie21
2020-10-28 16:01:43 +08:00
HiCode
2020-10-28 16:10:17 +08:00
@leopod1995

你的 80%是怎么算的?

前端做是考虑用户体验,后端做是考虑数据安全。前后端各自基于不同的角度去考量,还能分出个后端 80%,前端 20%的占比来?

笑话!
1107139144
2020-10-28 16:10:45 +08:00
后端做幂等,前端按钮控制
winecat
2020-10-28 16:15:04 +08:00
几乎是后端的锅,不用想,再怎么耍赖,也还是后端的锅.
前端也可以做验证,但也只是做得更好的体验而已,最终验证只能是后端呀.
JJstyle
2020-10-28 16:16:58 +08:00
前后端分离的项目,csrf token 应该不管用了, 因为前端前端生成表单时,是不需要请求后端 API 的
lookbackagain
2020-10-28 16:19:16 +08:00
这个要看功能,有些功能是不需要防止重复提交的,但是有需要避免重复提交的,不管前端做没做,后端的锅,前端只是体验问题

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

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

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

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

© 2021 V2EX