怎么防止二维码被伪造

我系统生成1个二维码,后台怎么识别用户扫的是我系统生成的二维码而不是用户根据我的二维码内容自己做的二维码?
加token或着加密方法我想了下, 用户扫一次我的码,然后复制token或者加密后的字符串,在生成自己的二维码我好像也分辨不出来噢

阅读 4.9k
5 个回答

只能对你的内容进行加密,让用户不能自己伪造,二维码说白了就是将文本图形化而已,扫码就是将文本解出来而已,所以只能从源头入手

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入

自己定个加密规则加密二维码的内容,扫码后再解密里面的内容

建议系统生成二维码时带上一个 token,用来标识二维码的有效性,当用户扫描二维码时,服务端拿到这个 token 之后再来校验二维码是否已失效

已参与了 SegmengtFault 思否 「问答」打卡,欢迎正在阅读的你也加入。

1 二维码内容就是一个 token
 token 由服务端生成,比如 mysql 的 UUID()
2 用户扫二维码后,把 token 提交到服务器做验证,取 token 对应内容
 如果是伪造的,服务器上不会存在对应 token

另外:如果需要识别扫码用户的身份,token+user identity+hash 来解决

这个其实要界定区分你所谓的被伪造的情况

  1. 完整包含你实际的内容,增加其他内容
  2. 完整包含你实际的内容,更换部分内容,感觉像其它
  3. 只包含你部分实际内容

对于3,可以采用上面提到的,增加token信息之类的方式,让伪造的失效,但对于1和2,其实没有根本的办法处理的。因为1和2包含了完整的原始信息,所以对效果来说是可以完全等效原始的,当然就不能杜绝。

其中1的影响可能更大,因为它可以改变真正的使用路径,比如增加中间层(中间过程)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题