Silverlight 5的安全性:為局域網而設計

jopen 12年前發布 | 8K 次閱讀 Silverlight

Silverlight 所扮演的角色一直為人所誤解。人們最初認為 Silverlight 要和 Flash 競爭,但是 Flash 本身已經被 HTML 5 所取代。人們還認為它是一種交付跨平臺應用程序的方式,但是 iOS 讓這個希望也破滅了。讓人奇怪的是,它在人們認為應該是 WPF 的領域——企業內部業務應用程序——中繁榮起來,而 Silverlight 5 中改進的安全性模型也反映了這一點。

Silverlight 2 是人們普遍認可的第一個真正意義上的版本,它出現后不久,人們就想要了解交付傳統樣式應用程序的方法。這項特性叫做“瀏覽器之外(out-of- brwoser)”或者 OOB,它最早是在 Silverlight 3 中提供的。但是早在發布之前,人們就開始要求訪問 COM。但是正如我們所知,考慮到安全性問題,在瀏覽器中訪問 COM 是非常可怕的想法。盡管微軟緩解了這個問題,并在 Silverlight 4 中添加了這個特性,但是僅針對 OOB 應用程序。

一旦 Silverlight 的開發者嘗到了 COM 的甜頭,他們就要求對底層操作系統由更多的訪問權限。并且他們要求即便是在瀏覽器中運行,也要能夠訪問。所以我們現在有了帶有p/invoke 功能的 Silverlight 5,它在瀏覽器之中擁有完全信任關系,這不僅僅是一種幻想,而且要成為一種公司的技術。有些人可能認為這是非常大膽的聲明,但是了解一下更新的 Silverlight 安全性概覽中所傳達的信息,就會發現并不盡然。

在瀏覽器信任的應用程序中,和瀏覽器之外信任的應用程序一樣,它們擁有其它權利,像訪問文件系統和調用 COM 對象。在瀏覽器中,只有它們帶有可信任發行商密鑰的簽名時,才能夠帶有信任關系運行,而這屬于企業環境中組策略設置的一部分。它永遠都不會提示用戶賦權。

成為“可信任的發行商”并不像購買密碼簽名證書那樣簡單。想要被添加到那個列表中,用戶需要手動導入證書,并使用為微軟管理控制臺所提供的 snap-in 功能來安裝。在控制面板中并沒有這個快捷方式;用戶需要從命令行運行。

在 Silverlight 4 中,應用程序至少需要擁有管理員的權限。但那個限制已經被去掉了。

Silverlight 5 不會去除管理員權限。在 Silverlight 4 中,如果以管理員權限運行 Silverlight 應用程序,那么 Silverlight 就會載入另一個受限的進程并結束原來的進程,從而移除管理員權限。受限的權限與 Windows Vista 及以上版本中的用戶賬戶控制(User Account Control,UAC)限制類似。Silverlight 5 擺脫了這種邏輯,并遵循了正常的操作系統規則,在 Silverlight 5 中,如果應用程序是作為管理員運行的,那么它就會帶有管理員權限運行,如果沒有作為管理員運行,那么就不會帶有管理員權限運行。

代碼簽名

如果你在部署面向互聯網的 Silverlight 應用程序,那么你就可以忽略所有受信應用程序的內容,但是還需要考慮很多安全性方面的指標。首先,微軟建議你對所有 Silverlight 簽名。“如果你無法使用證書頒發機構發布的簽名,那么至少應該自己對應用程序簽名,以避免有人在更新應用程序時進行中間攻擊。”

重新部署(Re-hosting)

Silverlight 應用程序所要面對的主要風險因素就是重新部署。有人可以創建釣魚站點,在其中放置真正 Silverlight 應用程序的副本。然后服務調用會通過虛假站點跳轉,這樣用戶名和密碼就會泄漏。

降低這種攻擊風險的一種方式是,進行檢查以查看應用程序是從哪個頁面載入的。如果不是從正確的域中載入,那么你就應該在啟動的時候退出。

跨站點腳本攻擊和頁面/應用程序信任

默認情況下,Silverlight 并不容易受到跨站點腳本攻擊。然而,暴露腳本函數就會引入這個問題,特別是在那些函數調用 XamlReader.Load 或 AssemblyPart.Load 的時候。作為一種規則,所有帶有 ScriptableMemberAttribute 標簽的函數都可以從 JavaScript 調用,所以你應該仔細檢查,看其中是否存在安全性漏洞。

另一種可能是引入了調用頁面上 JavaScript 腳本的惡意 Silverlight 應用程序。為了減少這種可能,標簽中的 EnableHtmlAccess 屬性應盡可能顯式地設置為 false。(注: 當頁面和應用程序來自于不同的域時,false 是默認值。)

直接服務調用(Direct Service Invocation)

一種經常被忽略的攻擊點是應用程序使用的服務調用。WCF 沒有一種可靠的方式用于檢測 web 服務是否真正來自于 Silverlight 應用程序,所以你需要假設所有服務調用都可能是惡意的,并且要在服務器中再次執行在客戶端已經完成的驗證操作。

查看英文原文:Silverlight 5 Security:Designed for the Intranet
來自: InfoQ

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!