2

全部,我将使用来自以下 URL 的二维码:http: //qrcode.kaywa.com/

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

基于 URL 中的变量,我想允许我的用户插入一些数据。

有没有一种方法可以确保我知道用户通过扫描 QR 码而不是仅仅在 URL 中输入该信息来访问该 URL?

谢谢!

4

2 回答 2

5

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


我们用来规避这个问题的一种方法是加密我们的 URL,这样我们自己的应用程序(基于ZXing)将是唯一能够读取我们的二维码的应用程序。然后它通过安全通道发送带有随机数的实际请求,这样重放攻击也将变得无用(以防有人在嗅探出站连接)。所有其他读者都会看到没有任何用处的加密 URL。

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


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

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

于 2012-08-01T03:44:26.823 回答
4

您可以向 URL 添加一个秘密参数,而不是使用该参数发布 URL。但基本上,不,您仍然不会知道是否有人不只是输入该 URL。(例如,我可能使用了 QR 码,然后将 URL 剪切并粘贴到给朋友的电子邮件中,而那个朋友可能已经输入了它。)但你会知道他们可能不只是输入它.

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

于 2012-08-01T03:44:17.733 回答