5

我已经看到了一些关于确保站点访问来自 QR 码扫描的问题,但它们似乎专注于分析目的(跟踪流量来自何处),而我的兴趣是安全/隐私。

我想设置一个只有在扫描提供的二维码时才能访问的站点。换句话说,我不希望 QR 码拥有的 URL 只能手动输入/粘贴以通过其他方式访问站点。

我一直在谷歌上搜索这个问题,但没有任何运气。我正在想办法通过引用 URL 或其他方式来确保通过实际扫描提供的 QR 码来确保一个人到达该站点。

编辑:该解决方案还需要独立于扫描仪(即我不能强迫用户下载和使用特定的 QR 扫描仪应用程序)和跨平台(Android + iOS + WinMo + BlackBerry 等)。

现在我把这个问题提交给你们这些了不起的人。

4

5 回答 5

2

您无法确保 URL 来自扫描二维码,这是不可能的。二维码只是一种对文本进行编码的方法,一旦用户知道了文本,他们就可以用它做任何他们想做的事情。

但是,您可以限制 QR 码的有用性,因此即使它被泄露也无用。如果可能的话,我会首先使用随机种子按需生成 QR 码,然后让它们很快过期。这样即使 QR 码被泄露,它也不会在很长时间内有用。

于 2013-04-22T14:56:11.713 回答
2

我们公司也有同样的情况。我们提供如下链接:

zxing://scan/?ret=http%3A%2F%2Ffoo.com%2Fproducts%2F%7BCODE%7D%2Fdescription&SCAN_FORMATS=UPC_A,EAN_13

其中 {CODE} 是在 QRCode 中返回的代码。所以你可以做的是创建一个像上面这样的 url(查看更多信息以获取链接)。然后在二维码里面放一个加密的数据,所以只有用户点击了这个url,二维码的数据是正确的。人们可以继续访问您的网站。这样,如果 qrcode 泄露,他们将不知道该站点。如果他们知道该站点,代码就会被加密。

如果人们通过单击您的网站来扫描条形码。zxing 将打开一个新的浏览器,其中包含扫描代码的 URL 和 {CODE}。

但是,人们确实需要来自 android 或 iphone 的条形码扫描仪。

更多信息:

于 2013-04-22T14:08:58.067 回答
1

您能做的最好的事情就是在您的二维码中设置一个查询字符串。就像是:

http://www.example.com/myapp

可以改为:

http://www.example.com/myapp/?qrcode=1

这可以在 PHP 中处理:

if(!isset($_GET['qrcode'])) die();

当然,这样做的问题是任何拥有该 URL 的人都可以在他们的普通 Web 浏览器中直接导航到该 URL。

然而,这不是你可以阻止的。

您还可以检查是否$_SERVER['HTTP_USER_AGENT']声称是手机。这是关于该主题的另一个问题

于 2013-04-22T14:06:28.437 回答
0

您可以添加参数,但归根结底,二维码只是一种编码文本的方法,所以如果有人知道编码了什么,您编码的任何内容都可以输入到浏览器中。

于 2013-04-22T14:07:43.693 回答
0

如果您从 QR 码对任何 Web URL 进行后调用,那么您发送的任何正文都将不可见,除非用户通过 QR 扫描模式。因此,仅输入 Web URL 用户将无法访问 Web URL 内容.

于 2017-02-22T10:12:05.497 回答