限制网站访问QR扫描仅

Restrict site access to QR scans only

本文关键字:扫描 QR 访问 网站      更新时间:2023-09-26

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

我想建立一个网站,只有当提供的QR码被扫描时才能访问。换句话说,我不希望QR码拥有的URL能够通过其他方式手动输入/粘贴到网站访问。

我一直在谷歌这个问题一点,没有任何运气。我正在考虑一种方法,通过引用url或其他方式,以确保一个人通过实际扫描提供的QR码到达网站。

编辑:解决方案也需要与扫描仪无关(即我不能强迫用户下载和使用特定的QR扫描仪应用程序)和跨平台(Android + iOS + WinMo +黑莓等)。

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

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

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

其中{CODE}是QRCode中返回的代码。所以你能做的就是像上面那样创建一个url(更多信息参见链接)。然后在QRCode中放入一个加密的数据,所以只有当用户点击这个url时,QRCode的数据才正确。人们可以继续访问你的网站。这样的话,如果qr码泄露了,他们也不会知道这个网站。如果他们知道地址,代码就被加密了。

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

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

更多信息:

  • zxing download/主页
  • zXing扫描从w

您无法确保URL来自扫描QR码,这是不可能的。QR码只是一种编码文本的方法,一旦用户知道了文本,他们就可以对其进行任何操作。

然而,你可以限制QR码的有用性,所以即使它被泄露了,它也没有用。如果可能的话,我会先用随机种子按需生成QR码,然后让它们很快过期。这样一来,即使QR码被泄露,它也不会很长时间有用。

最好是在QR码中设置查询字符串。比如:

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']是否声称是手机。这是关于这个话题的另一个问题。

你可以添加参数,但最终QR码只是一种编码文本的方法,所以无论你编码什么,只要有人知道编码的内容,就可以在浏览器中输入。

如果你通过QR码对任何web URL进行post call,那么无论你发送的是什么,除非用户通过QR扫描模式,否则都是不可见的。因此,仅通过输入Web URL用户将无法访问Web URL内容。