我已经看到了一些关于确保网站访问来自二维码扫描的问题,但他们似乎专注于分析目的(跟踪流量来自哪里),而我的兴趣是安全/隐私。
我想建立一个网站,只有当提供的二维码被扫描时才能访问。换句话说,我不希望二维码拥有的URL只能手动输入/粘贴,以便通过其他方式访问网站。
我在谷歌上搜索这个问题已经有一段时间了,但一点运气都没有。我正在尝试通过引用URL或其他方法来确保一个人通过实际扫描提供的二维码到达网站。
编辑:解决方案也需要独立于扫描仪(即我不能强迫用户下载和使用特定的QR扫描仪应用程序)和跨平台(Android + iOS + WinMo + BlackBerry等)。
现在我把这个问题提交给你们这些优秀的朋友们。
发布于 2013-04-22 22:08:58
我们公司也有类似的东西。我们提供如下链接:
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的数据是正确的时。人们可以继续访问你的网站。这样,如果qrcode被泄露,他们就不会知道网站。如果他们知道这个网站,代码就会被加密。
如果人们通过点击你的网站来扫描条形码。zxing将打开一个新浏览器,其中包含URL和充满扫描代码的{ code }。
但是,人们确实需要android或iphone的条形码扫描仪。
更多信息:
发布于 2013-04-22 22:56:12
您无法确保URL来自扫描二维码,这是不可能的。二维码只是一种对文本进行编码的方法,一旦用户知道了文本,他们就可以对它做任何他们想做的事情。
然而,你可以限制二维码的用处,所以即使它被泄露了,它也是没有用的。如果可能,我将通过随机种子按需生成二维码,并在不久之后让它们过期。这将使得即使二维码被泄露,它也不会在很长一段时间内有用。
发布于 2013-04-22 22:06:28
你能做的最好的事情就是在你的二维码中设置一个查询字符串。类似于:
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']是否声称是一部手机。这是关于这个主题的another question。
https://stackoverflow.com/questions/16149138
复制相似问题