【发布时间】:2017-08-16 14:19:56
【问题描述】:
我想使用二维码来唯一标识一个特定的地方,所以在这个地方你扫描二维码,应用就会知道你去过哪里。
我想确保用户无法通过生成 QR 码的副本(使用 API 或其他方式)在特定地点多次“签到”来重新创建此 QR 码和“作弊” .
二维码可以做到吗?
【问题讨论】:
标签: qr-code
我想使用二维码来唯一标识一个特定的地方,所以在这个地方你扫描二维码,应用就会知道你去过哪里。
我想确保用户无法通过生成 QR 码的副本(使用 API 或其他方式)在特定地点多次“签到”来重新创建此 QR 码和“作弊” .
二维码可以做到吗?
【问题讨论】:
标签: qr-code
除非您每次都可以创建一个新的并跟踪其使用情况,否则不会,一个人可以拍摄二维码的照片,然后将其发布,然后其他人可以用他们的手机或设备扫描副本。也许如果您要求也发送 gps 坐标,但没有什么可以阻止他们欺骗 gps 和图像。
【讨论】:
如果我正确理解了您的问题,这就是我的解决方案。您想创建一个包含您的数据的 JSON 对象,该对象应该使用 HMAC 之类的东西进行签名。将 Json 编码为 QR 例子
{
"data":{
"location":"lat/long"
},
"sign":"4bcb287e284f8c21e87e14ba2dc40b16"
}
【讨论】:
这就是我的做法。
创建一个指向http://example.com/place1的二维码
当用户扫描代码时,他们会被带到一个网站。
然后,使用 JavaScript 获取他们当前所在位置的 GPS 位置。
让他们提交一个网络表单,将他们的位置发送到您的服务。
示例 JavaScript
navigator.geolocation.getCurrentPosition(geoSuccess, geoStatus , { enableHighAccuracy: true });
【讨论】:
很遗憾,使用二维码是不可能的。复制二维码非常容易。
安卓应用商店中有可以解码二维码并保存数据的应用。 quickmark is one such scanner
quickmark 还可以制作二维码,并保存到设备中。以及使用二维码的照片进行扫描。
您需要使用某种外部验证。
我看到一个用户已经发布了一个可能的解决方案。
但另一种解决方案(我想会更贵)是为每个用户分配自己的代码,
然后将扫描仪放在位置上以扫描用户代码。
这将防止欺骗位置,因为它是您的硬件进行“签入”
这与belly 的工作方式大致相同
if your unfamiliar with belly heres a video that walks through customer signup and checking in
【讨论】: