Flash 平台安全性概觀Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本 Flash Player 和 AIR 執行階段使用的安全性模型,是以載入之 SWF 檔案、HTML、媒體以及其他資源的來源網域為基礎。來自特定網際網路網域 (如 www.example.com) 的可執行程式碼,永遠都可以存取該網域的所有資料,這些資源是放在相同的安全性群組之中,稱為「安全執行程序」(如需詳細資訊,請參閱安全執行程序)。 例如,SWF 檔案中的 ActionScript 程式碼,可以載入 SWF 檔、點陣圖、音效、文字檔,以及來自其本身網域的任何其它資源,而且只要兩個檔案都是使用 ActionScript 3.0 撰寫,永遠都允許來自相同網域的兩個 檔之間的跨指令碼處理。「跨指令碼處理」是指檔案中的程式碼具備另一個檔案的屬性、方法和物件的存取能力。 但是在使用 ActionScript 3.0 撰寫的 SWF 檔與使用舊版 ActionScript 撰寫的 SWF 檔之間並不支援跨指令碼處理,不過這兩種檔案可以使用 LocalConnection 類別進行通訊。而且根據預設,禁止使用 SWF 檔跨指令碼處理來自其他網域的 ActionScript 3.0 SWF 檔以及從其他網域載入資料的功能,但是呼叫被載入 SWF 檔中的 Security.allowDomain() 方法即可授與此存取功能。如需詳細資訊,請參閱跨指令碼處理。 根據預設,下列基本安全性原則永遠都適用:
Flash Player 和 AIR 執行階段會將以下各項視為個別的網域,然後分別為每個網域設定安全執行程序:
即使具名的網域 (如 http://example.com) 對應於特定 IP 位址 (如 http://192.0.34.166),執行階段會分別為兩者設置不同的安全執行程序。 開發人員有兩種基本方式可以用來授與 SWF 檔權限,以存取來自與 SWF 檔不同安全執行程序的資源:
在 Flash Player 和 AIR 執行階段安全性模型中,載入內容與摘取或存取資料是有區別的。「內容」是定義為媒體,包括執行階段可以顯示的視覺媒體、音效、視訊或包含顯示媒體的 SWF 檔案或 HTML。「資料」則是定義為只能由 程式碼存取的項目。內容和資料是以不同的方式載入。
Flash Player 安全性模型為載入內容與存取資料定義不同的規則。一般來說,載入內容的限制比存取資料的限制少。 一般而言,您可以從任何位置載入內容 (SWF 檔、點陣圖、MP3 檔和視訊),但是如果內容是來自與所載入之程式碼或內容不同的網域時,將會置入不同的安全執行程序中進行分割處理。 載入內容作業只包含少數幾道關卡:
如果載入的媒體是影像、音效或視訊,其資料 (如像素資料和聲音資料) 只有在媒體原始網域的 URL 原則檔中已經包含了該 SWF 檔的網域,才能由其安全執行程序以外的 SWF 檔來存取。如需詳細資訊,請參閱將載入的媒體當做資料加以存取。 其它形式的載入資料包括文字或 XML 檔,都是用 URLLoader 物件載入。同樣地,在這種情況下,若要從另一個安全執行程序存取任何資料,必須透過原始網域的 URL 原則檔授與權限。如需詳細資訊,請參閱使用 URLLoader 和 URLStream。 備註: 至於在 AIR 應用程式安全執行程序中執行的程式碼,永遠不需要原則檔,便能載入遠端內容或資料。
|
|