2010-11-30 83 views
4

還有人認爲Silverlight 4的安全性有點瘋狂嗎?我需要幫助瞭解Silverlight 4的安全性

請看以下情形:

  1. 的Silverlight當設置爲受信任的應用程序,並運行的瀏覽器模式下,可以瀏覽使用打開文件對話框的文件。
  2. 您需要文件路徑的名稱才能從任何COM自動化中打開它。例如(excel/word),但這可能是任何東西。
  3. 由於安全限制,無法從對話框中獲取文件的完整路徑
  4. 但是,您可以使用COM FileSystemObject - 執行用戶文件系統的任何操作,包括創建文件夾,移動和刪除文件。

換句話說,爲什麼所有關於Silverlight中安全性的事情,實際上阻礙了真正的業務用例,何時可以使用COM來訪問任何文件呢?要說另一種說法,如果用戶運行惡意Silverlight應用程序,那麼他們不太可能會說 - 嗯,這是COM的錯。 COM最終被Silverlight應用程序調用。

這裏是我的意思....

  • 用戶瀏覽文件 - C:\ myFile.xls
  • Silverlight的阻止你得到的路徑(出於安全原因)只
  • 的Silverlight可以讓你使用我的文檔
  • 使用COM你可以在背景中做任何你想要的文件系統。包括現在將該文件複製到我的文檔,只要你知道這個名字!但除此之外,如果任何文件未被使用,可以將其擦除。

在我看來Silverlight的安全模式是有缺陷的,或者他們應該給開發者充分的信任,讓我們來運行應用,就好像它們在本地運行

不允許Silverlight來訪問COM 。

這只是我,還是其他人可以看到它的一個不好的實現?

這會觸發安全警報:

OpenFileDialog flDialog = new OpenFileDialog(); 
FileInfo fs = flDialog.File; 
string fileName = fs.FullName; 

這不

dynamic fileSystem = AutomationFactory.CreateObject("Scripting.FileSystemObject"); 
fileSystem.CopyFile(anyFileName,anyDestination); 

回答

2

我不同意你的觀點一致。事實上,你幾乎可以做任何安裝的COM對象允許你做的事情是而不是這是修改大量現有Silverlight代碼以允許你做同樣事情的一個理由。

爲什麼?因爲在打開代碼的過程中,在Silverlight組件未運行在可信模式下時,相同代碼可能會以某種無意的方式運行,這也增加了可能性。如果這種情況發生,即使媒體一蹴而就,Silverlight的聲譽可能會不公平,但也會遭到破壞。

個人,我用非常謹慎的態度,以安全性MS與Silverlight的採取非常高興。

+0

什麼會更好,只是能夠從對話框抓取file.FullName。我不確定會拋出安全限制。因爲我無法做到這一點 - 我最終不得不看看Java或Adobe Air等其他fraemworks,或者使用服務器端解決方案。所以在這種情況下,不幸的是Silverlight無法處理我們的業務需求用例。 – 2010-12-01 00:13:02

1

一些Silverlight控件,如雙方信任和不信任模式下打開文件對話框的工作。這些控件已經從舊版本的Silverlight中移植到新的級別被提升的信任不是一個考慮因素。

謝謝安東尼指出了這一點。

開發者需要知道我們在這裏討論的信任定義。以提升的權限完全信任地運行Silverlight應用程序與運行本地基於Silverlight Windows的應用程序不同。它也比ActiveX更嚴格。

它有可能是在Silverlight這裏提供的信任適合您的特定業務需求。不過,有些情況下你會發現Silverlight的限制太多,最好先做你的研究,然後運行代碼示例,以確保你能夠在跳過高跟鞋之前完成關鍵的事情。

1

Microsoft保證公共Silverlight API對於Windows和MacOS平臺都具有相同的行爲。所以功能在很多方面受到共同點和技術可行性的限制。請將COM introp作爲僅針對Windows平臺的特定情況進行處理,並僅以完全信任模式進行處理,並且對其他平臺不起作用。所以安全限制是有效的,因爲它們在API重用方面對兩個世界都是一樣的。

0

我同意原來的海報。我認爲這是不好的實施。我們給出了一個內置的對話框來瀏覽文件,包括目錄結構。我們可以選擇一個文件並獲取一個FileInfo對象,但安全性阻止我們獲取FullName(目錄和文件名)。爲什麼?這如何提高安全性?開始文件對話框的目的是什麼?

正如樓主所說,這些動態的對象,我們可以通過修改本地文件系統...這似乎是可能的安全漏洞。

所有我想要做的就是讀取Excel文件的一些數據...我的用戶導入Excel數據到應用程序的方式,並且該文件可以在任何地方他們的機器上保存。這些銷售代表使用Excel文件在本地記錄訂單,直到他們可以訪問互聯網連接。誰知道他們在哪裏保存該文件......所以我不會試圖建議我們告訴他們所有人將它存儲在「我的文檔」中的相同位置。如果我提出這個建議,我會感到嘲笑。

它看起來應該是非常簡單。但是這種「安全措施」使我們無法從內置的打開文件對話框中獲取用戶選擇的目錄,這使得我們無法使用對話框來實現創建它的目的。

那麼有什麼選擇?有沒有辦法使用這些動態對象選擇文件?我是否必須使用可修改文件系統的對象編寫自己的文件選擇工具?由於我不需要任何東西,只能讀取文件,而且因爲我在某處讀取了可以訪問文件流的內容......有沒有辦法使用文件流打開文件以便使用AutomationFactory進行讀取?