WebApi 如何实现二维码过期?

2021-04-01 17:37:49 +08:00
 cobyx

是这样的,有一个签到的需求,为了防止拍照二维码给别人扫签到,所以想弄一个二维码过期的功能 求实现思路

2866 次点击
所在节点    程序员
27 条回复
hjosama
2021-04-01 17:43:30 +08:00
把二维码指向的链接加上时间戳,然后链接的请求接口进行控制,业务逻辑上,将请求过来的时间戳进行分析,然后判断时间区间,然后就可以设置过期时间了
zhoudaiyu
2021-04-01 17:43:35 +08:00
延迟队列?时间轮?
2kCS5c0b0ITXE5k2
2021-04-01 17:45:03 +08:00
肯定是带 token 后台判断拉. 这种不是很简单吗
hjosama
2021-04-01 17:45:36 +08:00
只要请求的时间戳大于链接生成时的时间戳比如 5 分钟,就判断为过期
2kCS5c0b0ITXE5k2
2021-04-01 17:45:40 +08:00
再加上定位 完美解决拍照二维码给别人扫签到
imn1
2021-04-01 17:46:30 +08:00
两个简单思路,应该还有其他的
1. 字串是动态的,隐含时间信息
2. 生成的图片是有时效的
应该第一个更广泛,甚至可以客户端判断失效,无需传到服务器端才判断,反正跟身份验证器的数字一个意思
hjosama
2021-04-01 17:46:44 +08:00
@emeab 原来如此!哥哥好聪明,根据 token 直接就知道是谁扫的二维码了,防止别人扫了,好厉害!
telung
2021-04-01 17:46:48 +08:00
招一个人坐在那边对着表格看是不是过期
hjosama
2021-04-01 17:48:03 +08:00
@telung 噗嗤,这种人力劳动好可爱
alan0liang
2021-04-01 17:49:43 +08:00
之前想过这个问题,直播( Zoom,腾讯会议)可以绕过一切只靠时间判断的检测
2kCS5c0b0ITXE5k2
2021-04-01 17:50:46 +08:00
@hjosama 我的说的 token 和你说的时间戳是一个意思.
2kCS5c0b0ITXE5k2
2021-04-01 17:51:42 +08:00
但是时间戳太容易被生成了. 所以建议后台维护一个短期 token. 来判断.
mogg
2021-04-01 17:51:50 +08:00
`为了防止拍照二维码给别人扫签到`这个需求我想起来一个叫“猫途校园的小程序”,每个人自己生成一个二维码,已经签到的人 A 扫 B 的二维码可以让 B 也签到。
hjosama
2021-04-01 17:52:54 +08:00
@emeab 感觉这样还是好麻烦呢,不让别人扫的话,进行身份校验不是更快吗
cobyx
2021-04-01 18:07:45 +08:00
@emeab 目前我也是打算后台存个短期 token 判断,但是不知道大概设置多久的有效期? 5s 30s?时间长了还是会被拍照扫吧。。
2kCS5c0b0ITXE5k2
2021-04-01 18:12:18 +08:00
@cobyx 那就再加上用户识别 + 定位
JmmBite
2021-04-01 18:14:13 +08:00
定位 + token + 隐藏水印(拍照后不显示那种)
cobyx
2021-04-01 18:16:44 +08:00
@emeab 目前就这样吧,加定位的话改的太多了,谢谢
Wincer
2021-04-01 18:17:14 +08:00
这种情况完全用不着后台存 token,担心时间戳被攻破可以加密一下再集成到 URL 里(许多库是做这个的( Python 有 itsdangerous )),验证过期时,直接解密除时间然后算与当前时间的 diff 就行。嫌加解密自己实现麻烦的话,使用 JWT
opengps
2021-04-01 18:18:01 +08:00
二维码就是个网址,网址带一个参数(叫做 token 也行,ticket 也罢),然后这个参数,后台做记录,扩展出创建时间之类的,访问网址就通过扩展信息去判断

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

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

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

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

© 2021 V2EX