【问题标题】:How could I start executables from within a modern browser?如何从现代浏览器中启动可执行文件?
【发布时间】:2015-07-10 10:41:29
【问题描述】:

我负责我们的公司应用程序菜单页面(仅限 Intranet)。它包含许多资源链接(网页和已安装的应用程序),并针对当前用户量身定制。

过去,我使用小程序允许直接从浏览器启动已安装的应用程序。

公司网站正在进行改造,有人告诉我要找到一个不需要任何插件的解决方案。

我的第一次尝试是注册一个自定义协议处理程序。菜单提供程序包含所有链接和应用程序命令的定义,每个用户都有不同的权限。我可以想象,当为用户创建菜单时,可以将命令编码并添加为custom://base64encodedcommand 之类的东西。处理程序将解码命令、执行检查并执行它。

这在 IE、FF 和 Chrome 中运行良好。目前,我们主要有 Windows 工作站,它只会在公司内部网中使用。

这是一种可行的方法吗?是否存在安全问题?

【问题讨论】:

  • 是的 - 恶意网站可以通过将它们重定向到 custom:// + 命令来指定客户端计算机执行的任何命令。不要依赖没有人知道这个协议的事实。始终假设任何攻击者都比自己聪明。
  • @SilverlightFox - 但是编码呢?我在测试阶段使用 base64,这可以轻松升级到不同的安全级别。我们还考虑了一个闭环,其中菜单提供程序添加了一个在命令执行之前检查的键。只是想弄清楚什么是太多,什么是太少......

标签: security web


【解决方案1】:

不幸的是,任何解决方案都只能证明漏洞的存在,而永远不能证明漏洞的存在。但是有一些必要但不够充分的方法可以使您的系统更能抵抗攻击。

目前您正在对执行字符串进行 base64 编码。这绝对不会增加安全性。即使您选择了一些不同的方法,这也只能是通过默默无闻的安全性,并且可以很容易地被有足够时间的人进行逆向工程。

您可以做的是设置某种公私钥签名。这样您就可以使用自己的私钥对每个链接进行签名,这意味着允许执行该链接,甚至不应该解码没有签名或具有无效签名的链接。

所以你会得到custom://+base64link+separator+base64signature

注意事项:

  1. 只有您(或非常精选的一群人)才能访问私钥,这一点非常重要。这与任何其他 pub-priv 密钥系统相同。
  2. 如果签名无效,您不仅不应该运行链接,而且甚至不能对其进行解码(因此您签署的是 base64 字符串,而不是已解码的命令)。立即假设这是一次攻击,甚至可能告知用户这一事实。

我再说一遍,虽然这可以被认为是安全的必要条件,但这还不够。因此,请继续考虑其他可能的攻击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多