安全地使用QR码

时间:2012-08-01 03:40:18

标签: php qr-code

全部, 我将使用以下URL中的QR码: http://qrcode.kaywa.com/

我想使用URL选项,所以当有人扫描它时,它们会被发送到我在代码上指定的URL。我希望有类似以下URL的内容: http://www.website.com/web-page/?type=uplights&action=checkout

根据URL中的变量,我想让我的用户插入一些数据。

有没有办法确保这一点,我知道用户通过扫描QR码而不是只是将该信息输入到URL中而得到此URL?

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以向URL添加secret-ish参数,而不是使用该参数发布URL。但基本上,不,你仍然不知道是否有人不只是键入该URL。 (例如,我可能已经使用了二维码,然后将电子邮件中的URL剪切并粘贴给朋友,而该朋友可能已将其键入。)但您知道他们可能不只是输入它。

QR码只是文本的可逆编码。那里没有魔力。因此,您可以采取一些措施来降低某人输入网址的可能性,但您永远无法确定。

答案 1 :(得分:4)

简答:不直接。 QR码的设计并不是为了保密内容。有人可以使用QR阅读器扫描您的URL,存储它并一遍又一遍地使用它,而无需再次实际扫描它。


我们用来解决此问题的一种方法是加密我们的网址,以便我们自己的应用程序(基于ZXing)是唯一能够阅读我们的QR码的人。然后,它通过安全频道发送带有 nonce 的实际请求,这样重放攻击也会变得无用(如果有人嗅探出站连接)。所有其他读者都看到了没有任何用处的加密URL。

除此之外,没有其他方法可以确保用户实际扫描您的QR并且不会输入/粘贴它。


我们实施此方式的方式:
我们将网址存储为http://www.website.com/app.php?<encrypted_string>。如果有人读了我们的URL不同的QR解码器,他们将被带到我们的app.php页面,该页面促使他们使用我们的应用程序读取QR。

我们的应用程序本身,在遇到剥离加密查询字符串的URL时,将其解密,并在右页面上形成自己的请求。在PHP中,您可以在服务器端本身执行该请求,因此用户永远不会看到该请求。您可以使用mcrypt作为详细的here进行加密。