请问如何实现 http 请求防止篡改呢

2023-07-13 08:41:36 +08:00
 zx9481

目前有一个网课看视频的功能 前端需要每隔 5 分钟请求后端更新课程播放记录(学习记录),为了防止客户端篡改请求参数,请问该如何实现呢?

6116 次点击
所在节点    Java
48 条回复
MrHyde
2023-07-13 08:47:34 +08:00
https ,recaptura
musi
2023-07-13 08:48:58 +08:00
直接用服务器的时间算
dfkjgklfdjg
2023-07-13 08:51:30 +08:00
这个不是 HTTP 请求篡改吧?做一个心跳请求?每隔多少秒请求一次服务器接口,然后服务端去累积播放时长?这样的话,用户端就算快进、拖动进度条都不会有影响到了。
zhangqian99
2023-07-13 08:53:52 +08:00
对请求信息进行加密就是了,非对称加密,RSA
churchmice
2023-07-13 09:03:50 +08:00
@zhangqian99 https 没有用的,通信密钥是双方协商出来的,客户端当然知道密钥
至于你说的 RSA,那是为了在协商密钥的时候被第三方窃取,防止中间人攻击的,这个又不防正在互相通信的两方
jorneyr
2023-07-13 09:06:54 +08:00
和前一次计时比时间差,超过 4.5M 才允许计时,在 4.5M 之内提交的计时请求就是无效的。
liuidetmks
2023-07-13 09:07:46 +08:00
搞一个 activeX 控件,IE only
npe
2023-07-13 09:11:46 +08:00
计算本次提交时间与上次提交时间的差值,再根据差值做判断。
bv
2023-07-13 09:11:49 +08:00
csrf
8yte
2023-07-13 09:12:13 +08:00
心跳间隔调低,学习时间在服务器算总时长

比如每隔一分钟发送一次关于视频 A 的数据包,服务器检查两次数据包间隔不能小于一分钟,否则报告异常。若视频 A 有 22 分钟,则视频 A 学习完成共需要接收 23 个包。不知道这样可不可行
tianxin8431
2023-07-13 09:14:17 +08:00
这种东西没必要做的那么尽善尽美...放你的用户们一条生路吧。
leaflxh
2023-07-13 09:18:18 +08:00
当初研究过超星学习通,每分钟发送心跳包,内容包括当前的进度,并附上 md5(请求参数 1+请求参数 2+...)算的签名防改参数。然后服务端根据心跳包的发送时间来检测是否快进或者拖动进度条。

没什么卵用,该自动化还是能自动化,大不了上 selenium 自动挂机
Ianchen
2023-07-13 09:18:48 +08:00
查看了哪些视频不应该后端早就知道了吗?为什么还要每隔 5 分钟上报?至于视频播放进度不应该是客户端自己保存吗?服务端还要做这事?而且就各大视频网站来说,完整视频都是切片的,播放到一定进度再请求接口获取下一段,这样也解决视频太大一次性传输数据过多撑爆带宽
leaflxh
2023-07-13 09:19:14 +08:00
@leaflxh 不过可以每隔几分钟跳一个验证码来检测是否挂机,最后接上 OCR 或者打码平台.....
leaflxh
2023-07-13 09:21:37 +08:00
道高一尺魔高一丈,可以一步一步的升级措施,如果接了打码平台甚至你还可以要求开双摄像头位,监控用户是否在听讲(
oppoic
2023-07-13 09:27:31 +08:00
跟之前老婆上网课场景差不多,除了视频还有在线 word 学习资料,一节一节的,视频和课件混插着来,看完一个翻下一个,视频不能快进

当时搜了下果然有解决方案,油猴脚本有人做了自动翻页的工具。电脑开着即可,视频播完翻下一页,课件自动滚。时长一点不差,但是人是一点没看
mmuggle
2023-07-13 09:29:28 +08:00
防君子不防小人。简单的请求参数加个密得了
oppoic
2023-07-13 09:36:43 +08:00
接 16 楼回复,脚本大概这样: https://greasyfork.org/zh-CN/scripts/437781

除非用户不会找解决方案,否则你屏蔽,脚本作者里面就更新脚本反屏蔽
a582102953
2023-07-13 09:44:33 +08:00
如果想安全就用手机 APP 做这种,通信进行签名加密传输。如果非要 h5 页面做,就是像楼上说的分段加载,当然有插件作弊,毕竟插件是模拟人的正常行为,最恶心人的就是一段时间弹窗一个 12306 年验证码让你人工输入,保证妥妥的插件失效。但搞这种容易找打,手动🐶
goodname
2023-07-13 09:46:52 +08:00
jwt 签名就是做这个的

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

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

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

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

© 2021 V2EX