限制站点仅访问 QR 扫描

     2023-02-22     36

关键词:

【中文标题】限制站点仅访问 QR 扫描【英文标题】:Restrict site access to QR scans only 【发布时间】:2022-01-23 11:45:09 【问题描述】:

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

我想设置一个只有在扫描提供的二维码时才能访问的站点。换句话说,我不希望 QR 码拥有的 URL 只能手动输入/粘贴以通过其他方式访问站点。

我一直在谷歌上搜索这个问题,但没有任何运气。我正在想办法通过引用 URL 或其他方式来确保通过实际扫描提供的 QR 码来确保有人到达该站点。

编辑:该解决方案还需要独立于扫描仪(即我不能强制用户下载和使用特定的 QR 扫描仪应用程序)和跨平台(Android + iOS + WinMo + BlackBerry 等)。

现在我将问题提交给你们这些好人。

【问题讨论】:

我觉得你可以在二维码的URL中添加一些参数。 这是不可能的。您可以随时复制 URL 并分享它。 您不一定需要参数。相反,获取访问网站的设备的 Header,并确保它仅来自可以扫描 QR 码的设备:手机、平板电脑等。这本质上就像设置一个移动网站。不是万无一失,但我认为没有万无一失的方法。 @Kacey:带网络摄像头的电脑,... @str:这就是为什么我说要获取 Header 信息。当然,有人可以更改他们浏览器的 Header 信息,但这也是我说这不是万无一失的原因。 【参考方案1】:

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

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

其中 CODE 是在 QRCode 中返回的代码。所以你可以做的是创建一个像上面这样的 url(查看更多信息以获取链接)。然后在二维码里面放一个加密的数据,所以只有这个url被用户点击了,二维码的数据是正确的。人们可以继续访问您的网站。这样,如果 qrcode 泄露,他们将不知道该站点。如果他们知道该站点,代码就会被加密。

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

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

更多信息:

zxing download / homepage zXing scanning from w

【讨论】:

听起来很有希望,虽然我不熟悉斑马线,所以我必须深入研究你提供的研究。感谢您的回复,您清楚地理解了我的要求! 用上面的链接创建一个href。下载扫描仪。制作二维码,工作不做。单击链接,扫描仪将打开,用户将被重定向到给定页面。就这么简单! 1个重要的想法,你不能通过Javascript激活扫描仪。出于安全原因,用户必须在 Android 中手动单击链接。 这是否需要在用户的设备上安装 XZing? 仅扫描仪。但它是 Android 上最常用的扫描仪之一。 play.google.com/store/apps/… 好问题,@DannyBeckett,谢谢你的提问。不幸的是,我需要该解决方案独立于扫描仪。我会相应地更新原始问题。【参考方案2】:

您无法确保 URL 来自扫描二维码,这是不可能的。二维码只是一种对文本进行编码的方法,一旦用户知道了文本,他们就可以用它做任何他们想做的事情。

但是,您可以限制 QR 码的有用性,这样即使它被泄露也无用。如果可能的话,我会首先使用随机种子按需生成 QR 码,然后让它们很快过期。这样一来,即使二维码被泄露,它也不会在很长时间内有用。

【讨论】:

【参考方案3】:

您能做的最好的事情就是在您的二维码中设置一个查询字符串。比如:

http://www.example.com/myapp

可以改为:

http://www.example.com/myapp/?qrcode=1

这可以在 PHP 中处理:

if(!isset($_GET['qrcode'])) die();

当然,这样做的问题是任何拥有该 URL 的人都可以在他们的普通网络浏览器中直接导航到该 URL。

但是,这不是您可以阻止的。

您还可以检查$_SERVER['HTTP_USER_AGENT']是否声称是手机。这是 another question 的主题。

【讨论】:

HTTP_REFERER 能在这里玩吗?检查访问者是否(在一定的可信度范围内)直接来自 QR 扫描仪应用程序或其他网站? @praguian HTTP_REFERER 应该是空白的。所以你总是可以做if(!empty($_SERVER['HTTP_REFERER'])) die(); 正是我所暗示的,@DannyBeckett。在您看来,这会是一种可行的解决方案吗?这也是我可以自己研究的东西,但是即使用户手动将 URL 粘贴到浏览器中,是否存在 HTTP_REFERER 可能为空白的合理/频繁的场景?就像在会议开始时一样,也许?只是想想想这种方法可能存在的漏洞。 @praguian 是的,这完全有可能。本质上,您需要使用几种不同事物的组合。使用查询字符串,检查用户代理是否是移动设备,并检查引用者是否为空。如果其中有任何项未能通过您的检查,die(); 谢谢丹尼,我会试试这个组合。对于@str 上面关于具有能够扫描二维码的网络摄像头的非移动设备的观点,所讨论的网站无论如何都是为移动设备设计的,因此检查用户代理也是一个有价值的入口。我应该在我原来的问题中指定这一点,但这是容易的部分,所以我不想混淆这个问题。 :)【参考方案4】:

你可以添加参数,但最终二维码只是一种编码文本的方法,所以如果有人知道编码了什么,你编码的任何东西都可以输入到浏览器中。

【讨论】:

【参考方案5】:

如果您通过 QR 码对任何 Web URL 进行后调用,那么您发送的任何正文都将不可见,除非用户通过 QR 扫描模式。因此,仅输入 Web URL 用户将无法访问网址内容。

【讨论】:

wp页面上的二维码扫描器实现

...的Wordpress页面或弹出窗口中实现QR码扫描器,因此当用户访问页面/弹出窗口链接时,他/她将能够扫描QR码。QR码基本上是woocommerce产品url,所以我希望QR码扫描仪仅在从我的网站生成QR码时继续。可以读取不是从我的网站生成的其... 查看详情

c#站点ip访问频率限制针对单个站点

 站点IP访问频率限制针对单个站点 usingSystem;usingSystem.Collections.Generic;usingSystem.IO;//usingSystem.Linq;usingSystem.Web;//<summary>//IP访问频率控制//</summary>publicstaticclassIPCacheManager{/ 查看详情

Azure 将 ip 限制为点到站点 ***

】Azure将ip限制为点到站点***【英文标题】:AzureRestrictiptothePointtosite***【发布时间】:2018-11-1607:27:08【问题描述】:我最近在azure上配置了一个指向站点***的点。它在客户端和根证书原则上运行良好。我更关心的是安全方面。是... 查看详情

应用服务appserviceappservicerewrite实例--限制站点的访问

问题描述在AzureAppService中,当需要限制某些特殊的情况对其进行访问时候,可以通过IP限制,逻辑代码判断,或者Rewrite规则。通过IP限制则需要知道客户端访问的IP,而通过逻辑代码则需要对应用代码进行修改导致在部署才改动... 查看详情

如何通过 nGinx 限制 IP 对站点的访问?

】如何通过nGinx限制IP对站点的访问?【英文标题】:HowtorestrictaccesstoasitebyIPthroughnGinx?【发布时间】:2021-12-1619:40:01【问题描述】:我有一个可以通过输入IPaddress访问的网站。我想让它只能通过domain访问。网上适合的素材很少,n... 查看详情

Spring security如何允许匿名访问大多数限制某些操作的站点

】Springsecurity如何允许匿名访问大多数限制某些操作的站点【英文标题】:Springsecurityhowtoallowanonymousaccesstomostofsiterestrictingcertainactions【发布时间】:2012-05-3115:15:36【问题描述】:我希望有与StackOverflow类似的行为,您可以在其中... 查看详情

Azure 存储仅限制访问一个容器

】Azure存储仅限制访问一个容器【英文标题】:AzureStoragerestrictaccessonecontaineronly【发布时间】:2021-03-1822:51:48【问题描述】:这是我的情况:AzureAD中有两个组。组1只能访问container1,不能访问container2Group2只能访问container2,不能... 查看详情

限制除少数页面外的整个 WP 站点访问 [关闭]

】限制除少数页面外的整个WP站点访问[关闭]【英文标题】:RestrictwholeWPsiteaccessexceptfewpages[closed]【发布时间】:2015-09-2219:03:48【问题描述】:我想这样做:阻止整个网站(比如abc.com),但只允许少数页面,例如abc.com/gamma和abc.com... 查看详情

虚拟主机重定向到 xampp 文件夹,但仅获取无法访问此站点

】虚拟主机重定向到xampp文件夹,但仅获取无法访问此站点【英文标题】:Virtualhostredirectingtothexamppfolder,butonlygettingThissitecan’tbereached【发布时间】:2017-12-2908:21:05【问题描述】:我知道我可能遗漏了一些简单的东西,但我已经... 查看详情

拒绝直接访问 sitemap.xml(仅允许搜索机器人)

...间】:2021-06-3021:37:29【问题描述】:我在Apache2.4上,需要限制用户对sitemap_index.xml的直接访问,只允许已知的机器人访问站点地图,你能帮我用一些.htaccess规则吗?【问题讨论】:【参考方案1】:您可以添加一个规则 查看详情

安全的单站点 JWT 实施

...问令牌。这样,我可以为访问令牌设置较短的过期时间并限制数据库调用以验证用户,并且仅在访问令牌过期 查看详情

使用 raspberryPi 相机 nodeJS 进行 QR 扫描

】使用raspberryPi相机nodeJS进行QR扫描【英文标题】:QRscanningusingraspberryPicameranodeJS【发布时间】:2020-02-2510:47:17【问题描述】:我正在创建一个nodeJS应用程序,可以用来扫描树莓派3板上的二维码。我能够成功使用USB摄像头并使用In... 查看详情

限制对 Redshift 表的访问,仅授予对视图的访问权限

】限制对Redshift表的访问,仅授予对视图的访问权限【英文标题】:RestrictaccesstoRedshifttables,onlygrantaccesstoaView【发布时间】:2019-10-1016:14:05【问题描述】:在AWS上使用Redshift。我们有一个数据库,其中包含我们想要向客户展示的视... 查看详情

仅 1 个用户拒绝访问本地 Intranet 页面

...915:06:33【问题描述】:我们有一个由Apache服务器托管的PHP站点。我们有一个从Windows服务器托管的.NET站点。两者都是内部的,并且在我们的域内。当用户访问PHP站点时,它会检查您的用户名是否已被会话。如果没有,它会执行ajax... 查看详情

python: tkinter 显示来自网络摄像头的视频并进行 QR 扫描

】python:tkinter显示来自网络摄像头的视频并进行QR扫描【英文标题】:python:tkintertodisplayvideofromwebcamanddoaQRscan【发布时间】:2016-09-0212:31:11【问题描述】:我一直在尝试创建一个tkinter***窗口,用于从网络摄像头传输视频并进行QR扫... 查看详情

如何修复此 QR 码扫描仪的代码?

】如何修复此QR码扫描仪的代码?【英文标题】:HowtofixthecodethisQRCodeScanner?【发布时间】:2021-09-1305:47:04【问题描述】:我差点在AndroidStudio中做了一个用WebView扫描二维码的应用,但还没有完成。我的应用程序扫描代码后,该应... 查看详情

当我尝试将 qr 扫描与 Web 视图一起使用时,Android 崩溃

】当我尝试将qr扫描与Web视图一起使用时,Android崩溃【英文标题】:AndroidcrasheswhenItrytouseqrscanningwithawebview【发布时间】:2021-06-1822:02:08【问题描述】:我尝试将qr_code_scanner的二维码扫描器与webview_flutter的Webview组件结合使用。在i... 查看详情

如何使用 Express.js 将 API 访问限制为仅授权域?

】如何使用Express.js将API访问限制为仅授权域?【英文标题】:HowtorestrictAPIaccesstoonlyauthorizeddomainsusingExpress.js?【发布时间】:2015-01-0422:36:18【问题描述】:我正在为我的Node.js/Express.js应用程序设置一层安全性,我想限制对authlist... 查看详情