php - 安全地使用二维码

标签 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 中输入该信息?

谢谢!

最佳答案

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

<小时/>

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

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

<小时/>

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

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

关于php - 安全地使用二维码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11752264/

相关文章:

php - YiiFramework ServerPilot CDbConnection 找不到扩展名

iphone - 强制在 Safari 而不是应用内浏览器中打开链接

PHP mPDF 二维码 : How to control the auto-generated QR-Code-border?

php - 服务器如何响应 iOS 设备?

php - 在 PHP 中使 file_get_contents() session 感知

php - 在 Elasticsearch PHP 包中使用 "And"运算符进行搜索

ios - 在 iOS 上设置初始焦距

c++ - 在原生 C/C++ 中使用 Qt 绘制二维码

java - Apache FOP 1.1 QRCodes 与 zxing

PHP Mysql解析错误