阻止网络浏览器尝试导航到未知的 URL 方案

Prevent web browser to try to navigate to unknown URL scheme

当我使用用于在线身份验证的服务时,我得到一个 url 导航到它会自动打开一个用于输入密码的应用程序。

url的格式为:

bankid:///?autostarttoken=2a1b5e2c-c9fb-4402-1239-2a1619d655e9&redirect=null

这种 url 的导航仅在安装了特定应用程序的移动设备上才有意义。

然而,桌面浏览器(不是每个人)也尝试导航到这样的 url,就像它永远是可能的一样。这当然会导致错误页面。

他们为什么这样做?

我需要使用隐藏表格吗?

每个机动单位都会遵守吗?

自定义 URL 方案用于能够在本地启动应用程序,在本例中是处理 2FA 的 BankID 客户端。

只要注册了自定义 url 方案,这在移动设备和桌面设备上都能很好地工作。 AFAIK 对于移动设备,如果 URL 方案未在本地注册,它将查询应用商店并让用户从那里安装。 BankID 可用于应用商店中的 iPhone 和 Android。在 Windows 上它也查询应用程序商店,但是 BankID 客户端作为 Windows 应用程序不可用,因此必须从 https://install.bankid.com. On Mac I have no idea if it queries the app store, but I know it has to be installed manually from https://install.bankid.com

手动安装

Android、iPhone、Windows Phone、Windows 移动设备、Windows XP 及更高版本、MacOSX 都遵循自定义 URL 方案,但它也需要被浏览器尊重,所有主要浏览器都这样做。

历史上,在移动之前,我们过去常常使用浏览器中的 NSS 插件支持来启动程序。 NSS 插件支持已被浏览器删除,因为从安全的角度来看它很容易被误用。

这就是使用自定义 URL 方案的原因。

您可以在 BankID relying party guidelines, there is a transition to use https://app.bankid.com 链接中阅读有关启动客户端的信息。基本上,这只是一个类似于 bankid:// 的自定义 url 方案,但同时注册协议 (https://) 和主机 (app.bankid.com),然后启动应用程序。这有一个额外的好处,如果用户没有安装客户端并且无法通过应用程序商店或类似的方式找到客户端,将获得可用的网站,然后可以帮助用户安装客户端。

如果 URL 未在本地注册,应用链接的目的是让用户导航到该网站,因此不要隐藏导航。