2015-07-10 80 views
2

我負責我們的企業應用程序菜單頁(僅限內部網)。它包含許多指向資源(網頁和安裝的應用程序)的鏈接,併爲當前用戶量身定製。如何從現代瀏覽器中啓動可執行文件?

過去,我使用了一個applet來允許已安裝的應用程序直接從瀏覽器啓動。

公司網站正在進行一次改造,我被告知要找到一個不需要任何插件的解決方案。

我第一次嘗試註冊自定義協議處理程序。菜單提供程序包含所有鏈接和應用程序命令的定義,每個用戶都有不同的權限。我可以想象,當爲用戶創建菜單時,命令可以被編碼並添加爲類似custom://base64encodedcommand的東西。處理程序將解碼命令,執行檢查並執行它。

這適用於IE,FF和Chrome。目前,我們主要使用Windows工作站,它只能在公司內部網中使用。

這是一種可行的方法嗎?有沒有安全問題?

+0

是的 - 一個惡意網站可以通過簡單地將它們重定向到'custom://'+命令來指定客戶端機器執行的任何命令。不要依賴沒有人知道這個協議的事實。總是假設任何攻擊者都比你自己聰明。 – SilverlightFox

+0

@SilverlightFox - 但編碼呢?我在測試階段使用base64,可以輕鬆升級到不同的安全級別。我們也在考慮一個閉環,菜單提供者添加一個在命令執行前被檢查的鍵。試圖找出什麼是太多,什麼是太少.... – paul

回答

1

不幸的是,任何解決方案都可能只能證明存在漏洞,並且永遠不會存在漏洞。但是有一些必要的但並不足以讓你的系統更能抵抗攻擊的方法。

當前你是base64編碼的執行字符串。這絕對不會增加安全性。即使你選擇了一些不同的方法,這隻會通過默默無聞的安全性,並且可以很容易地被有足夠時間的人逆向工程。

你可以做的是建立某種公私密鑰簽名。這樣你就可以用自己的私鑰對每個鏈接進行簽名,這就意味着這個鏈接被允許執行,沒有簽名的鏈接或簽名無效的鏈接都不應該被解碼。

所以你會有什麼是custom:// + base64link + separator + base64signature

事情要記住:

  1. 這是非常重要的,只有你(或人非常選擇組)能夠訪問私鑰。這與任何其他pub-priv密鑰系統都是一樣的。
  2. 如果簽名無效,你不僅不應該運行鏈接,而且你甚至不能解碼它(因此你簽署base64字符串,而不是解碼命令)。假設它立刻就是一次攻擊,甚至可能通知用戶這一事實。

我再說一遍,雖然這可以被認爲是安全所必需的,但這不是足夠的。所以請繼續考慮其他可能的攻擊。