【问题标题】:Automatically unblocking executables downloaded from the web site自动解锁从网站下载的可执行文件
【发布时间】:2017-09-07 21:24:14
【问题描述】:

我有一个网站(Intranet),允许您下载用 ASP.NET 编写并使用 https 的可执行文件(当前为 .Net 控制台应用程序)。

但是在很多机器上我不能在下载后马上运行它——我需要右键点击它,去Properties然后点击Unblock这让使用这个应用程序很不舒服(用户经常不得不下载这个可执行并运行 - 每次都是新的,因为它是代码生成的)

有没有办法让这个可执行文件自动解锁?修改客户端机器不是一种选择,但我可以对服务器做任何事情。

从一开始我就认为这是不可能的,因为它是一种安全保护,但 Chrome 以某种方式做到了这一点。如果我使用安装了 IE 的新 PC,在 Bing 中键入 Chrome 并安装它 - 我不必取消阻止可执行文件。

到目前为止,我仅在 W10 Chrome 和 IE 上对此进行了测试,但我很确定较旧的 Windows 版本也存在此问题。

【问题讨论】:

  • 如果你先压缩它们会怎样?
  • @VDWWD 这会强制用户进行额外的操作 - 解压缩。有点像他们必须去Properties - Unblock。同样从我在网上找到的信息来看,压缩文件仍然需要解封。我看到了更改扩展名并要求用户将其重命名回来的建议 - 但这比要求取消阻止更糟糕
  • 如果 Chrome 下载的行为不同,这将是硬编码异常或基于信誉的决定。您无法从服务器端复制它。但我不会认为有必要明确取消阻止文件。如果双击它,是否会提示您是否要运行它?
  • @HarryJohnston 有可能,但我有疑问。 Microsoft 并不以支持竞争对手而闻名,我几乎不相信他们愿意帮助使用 IE 安装 Chrome(为此使用了多少 IE?:))但您可能仍然是对的。至于提示 - 这很奇怪,但您没有收到提示。当您运行可执行文件时 - 没有任何反应,除非您先取消阻止它。我如何在不解锁的情况下运行它的唯一方法是首先运行cmd 并从中运行控制台应用程序。这可能是我使用的测试机器的问题,我会尝试另一个
  • 有理由假设 Chrome 可能是硬编码的例外,作为针对进一步反垄断诉讼的先发制人措施,但总的来说,我认为更有可能只是作为 Microsoft Smartscreen(或类似的基于声誉的技术)做它的事情。我想您可以尝试获取扩展的验证码签名证书,看看是否有什么不同。不过,这是一项昂贵的实验!

标签: asp.net windows web windows-security


【解决方案1】:

显示不受信任的可执行对话框的机制基于备用数据流。当您从网络源下载内容时,Windows 或浏览器会添加元数据,因此您的文件/网络服务器不可能影响此行为。另一方面,Windows 有一个规则集,用于应用可以在 Internet 选项的 TrustZone-Settings 中找到的标志。

NTFS 有一个简洁的小功能,它允许一个文件有多个内容,也称为备用数据流。这是一个仅限 NTFS 的功能,因此您不会在其他分区类型上找到它。这基本上允许您在文件中存储更多数据,这些数据对用户来说是不可见的,并且标准 Windows 用户无法轻松找到这些数据。 Windows 使用这些备用数据流来标记文件的来源,尤其是从 Internet 或 Intranet 下载时。用于此数据的备用数据流称为“Zone.Identifier”,并保存从其复制文件的区域的 ID。当您决定信任一个文件时,您基本上是告诉 Windows 删除该数据流。

Windows 使用不同区域的概念对这些文件进行分类。 Windows 总共知道四个区域:Internet、Intranet、可信站点和受限站点。您可以在“信任区”选项卡中的 Internet 选项对话框中更改设置和规则

安全说明:在更改公司信任区域的设置之前,请考虑三次安全风险。因为它将允许执行来自那些经过验证的来源的任何可执行文件,这可能会为恶意可执行文件铺平道路,然后这些恶意可执行文件可以由已感染的 PC 或用户自己启动。

【讨论】:

  • 你不认为这个建议会削弱提问者组织的整体安全性吗?
  • 嗯,没想到。我会补充一句。对于提问者来说,这似乎不是一个问题。在他的 Intranet 中,这已被公司 IT 禁用,只有他的网站(位于 Intranet 内)被错误地归类为 Internet 来源。
【解决方案2】:

解决该问题的正确方法是使用受信任且有效的code signing certificate 签署该可执行文件,最好使用 EV(扩展验证)。 Windows 将在您运行文件时检查证书,并允许它在没有进一步操作的情况下运行,因为它是使用受信任的证书签名的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-02
    • 2022-01-23
    • 2011-06-23
    • 2020-11-23
    • 2016-07-02
    • 1970-01-01
    相关资源
    最近更新 更多