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

301 天前
 zx9481

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

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

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

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

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

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

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

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

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

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

© 2021 V2EX