自定义协议(URI方案)的替代

ste*_*nci 6 wsh url-scheme

我已经在所有内部应用程序上广泛使用自定义协议来打开任何类型的文档(CAD,CAM,PDF等),打开文件资源管理器并选择特定文件,并运行其他应用程序。

多年前,我定义了一个myprotocol协议,C:\Windows\System32\wscript.exe该协议通过传递VBScript的名称以及每个请求具有的参数来执行。传递给脚本的第一个参数描述动作的类型(OpenDocumentShowFileInFileExplorerExportBOM等),下面的参数被传递给动作。

直到去年wscript.exe停止工作时,一切都运转良好(有关详细信息,请参见此处)。我将问题复制到来解决wscript2.exe。现在,创建副本是我们所有计算机的标准配置中的一个步骤,现在使用该副本是wscript2.exe我们自定义协议的正式配置。(我们的防病毒客户支持找不到与交互的任何内容wscript.exe)。

今天,在构建新计算机之后,我们发现:

  • Firefox没有看到wscript2.exe。如果单击自定义协议链接,然后单击浏览按钮并打开该文件夹,则只会看到一小部分.exe文件,其中包括wscript.exe,但不包括wscript2.exe(我不知道这个问题最近有多久,因为我不要亲自使用FireFox)。
  • Firefox可以看到wscript.exe,但仍然无法正常工作(行为与我之前链接的上一篇文章中所述的相同)
  • Chrome适用于wscript2.exe,但现在总是要求您进行确认。根据本文的说法,似乎是新方法,并且情况很快可能会再次发生变化。每次单击确认框对我的用户来说都是一个很大的禁忌。这会减慢许多工作流程,这些工作流程需要快速单击页面上的数百个链接,例如,查看在大型工程图中缩放到一个几何图形的CAD应用程序。

去年,我已经解决了一个问题,现在我正在处理另一个问题,阅读该文章使我感到恐惧,并使我认为很快就会出现更多问题。

所以这是一个问题:除了使用自定义协议,还有其他选择吗?

我不在开发供公众消费的Web应用程序。我的自定义协议需要VBScript文件,脚本使用的应用程序以及大量的网络共享文件夹。它们仅在我们的内部网络中使用,并且使用它们的计算机是手动配置的。

ahw*_*hih 1

首先,即使仅在内部网络上,这也是非常危险的。除非计算机/用户/浏览器被锁定在互联网之外,否则有人可能会猜测或发现您的协议名称,向您公司中的某人发送链接并造成很多麻烦(也可能造成损失)。

反正...

由于您正在控制所有计算机上的软件,因此您可以在每台计算机上添加一个小型服务器,仅侦听本地主机,这只是调用您的脚本。然后定义主机secret.myprotocol以指向该服务器,例如 localhost:1234。

只是为了稍微减少潜在的问题,本地服务器将仅使用 HTTPS,并使用适当的证书,HSTSHPKP设置为很长的时间(因为您控制软件,所以您可以在需要时刷新它们)。最后两个,以防万一有人尝试设置相同的域,并且无论出于何种原因,主机覆盖不起作用并且用户最终调用敌对服务器。

因此,链接必须从 更改myprotocol://whateverhttps://secret.myprotocol/whatever

它确实引入了新的攻击面(“迷你服务器”),但应该很容易实现,以最小化该攻击面的大小:)。“迷你服务器”甚至不必是真正的 www 服务器,一个可以监听套接字并调用的简单脚本wscript.exe就可以了(除非您需要向其传递更多信息)。真实服务器有更多可能存在错误的代码,但也允许添加更多内容,例如“通过”页面,显示信息“在 3 秒内打开文档 X...”和“取消”按钮。它还可能需要某种会话登录(只是为了确保是用户请求操作,而不是其他)。