安全執行程序Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本 用戶端電腦可以取得個別檔案,可能包含程式碼、內容以及來自一些來源的資料,這些來源像是外部網站、本機檔案系統,或者安裝的 AIR 應用程式。Flash Player 和 AIR 執行階段會在各個程式碼檔案和其它資源 (如共享物件、點陣圖、聲音、視訊和資料檔案) 載入 Flash Player 時,根據其來源分別指定至安全執行程序。下列各節將說明由執行階段強制執行的規則,以控制在指定的安全執行程序中執行的程式碼或內容可以存取的項目。 如需有關 Flash Player 安全性的詳細資訊,請參閱 Flash Player 開發人員中心主題「安全性」,網址為:www.adobe.com/go/devnet_security_en。 遠端安全執行程序Flash Player 和 AIR 執行階段在與來源網域對應的個別安全執行程序中,會為來自網際網路資源進行分類 (包括 SWF 檔案)。 例如,從 example.com 載入的資源會放到不同的安全執行程序中,與 foo.org 載入的資源區隔開來。 根據預設,這些檔案都獲得授權,可自本身的伺服器存取任何資源。遠端 SWF 檔可透過明確網站及作者權限 (如 URL 原則檔及 Security.allowDomain() 方法),允許自其它網域存取額外的資料。如需詳細資訊,請參閱網站控制 (原則檔)、作者 (開發人員) 控制。 遠端 SWF 檔不能載入任何本機檔案或資源。 如需有關 Flash Player 安全性的詳細資訊,請參閱 Flash Player 開發人員中心主題「安全性」,網址為:www.adobe.com/go/devnet_security_en。 本機安全執行程序「本機檔案」代表任何使用 file: 通訊協定或通用命名慣例 (UNC) 路徑參考的任何檔案。本機 SWF 檔是置入四個本機安全執行程序的其中一個:
嚴格禁止具有網路的本機與具有檔案系統的本機安全執行程序之間,以及具有檔案系統的本機安全執行程序與遠端安全執行之間的通訊。無論是在 Flash 中執行的應用程式,或使用者或系統管理員執行的應用程式,都無法授與權限允許上述通訊。 以指令碼處理本機 HTML 檔與本機 SWF 檔之間的往返通訊 (例如,使用 ExternalInterface 類別) 需要 HTML 檔和 SWF 檔雙方同時都在本機信任的安全執行程序中。這是因為瀏覽器的本機安全性模型與 Flash Player 本機安全性模型不同的緣故。 位於具有網路的本機安全執行程序中之 SWF 檔無法載入具有檔案系統的本機安全執行程序中之 SWF 檔。位於具有檔案系統的本機安全執行程序中之 SWF 檔無法載入具有網路的本機安全執行程序中之 SWF 檔。 AIR 應用程式安全執行程序Adobe AIR 執行階段會將額外的應用程式安全執行程序,新增至 Flash Player 安全執行程序模型。安裝後變成 AIR 應用程式一部分的檔案,會載入至應用程式安全執行程序中。應用程式載入的任何其他檔案,它們符合一般 Flash Player 安全性模型指定的安全限制。 安裝應用程式時,AIR 套件中包含的所有檔案都會安裝到使用者電腦的應用程式目錄。開發人員可以透過 app:/ URL 配置,在程式碼中參考此目錄 (請參閱URI 配置)。應用程式目錄樹狀結構之中的所有檔案會在執行應用程式時,指定給應用程式安全執行程序。應用程式安全執行程序中的內容享有 AIR 應用程式可用的完整權限,包括與本機檔案系統互動。 許多 AIR 應用程式只使用這些安裝於本機的檔案來執行應用程式。但是,AIR 應用程式並不是只限於應用程式目錄中的檔案,而是可以從任何來源載入任何類型的檔案。其中包括使用者電腦的本機檔案,以及可用外部來源的檔案 (例如在區域網路或網際網路上的檔案)。檔案類型對於安全性限制沒有任何影響,從相同來源載入的 HTML 檔案與 SWF 檔案具有相同的安全性權限。 應用程式安全執行程序中的內容可以存取其它安全執行程序中內容不得使用的 AIR API。例如,air.NativeApplication.nativeApplication.applicationDescriptor 屬性會傳回應用程式的應用程式描述器檔案內容,但這個屬性僅供應用程式安全執行程序中的內容使用。另一個有限制 API 的範例是 FileStream 類別,此類別包含讀取及寫入本機檔案系統的方法。 在「ActionScript 3.0 Reference for Adobe Flash Platform」中,僅供應用程式安全執行程序內容使用的 ActionScript API 會以 AIR 標誌標註。在其它安全執行程序中使用這些 API 會導致執行階段擲出 SecurityError 例外。 對於 HTML 內容 (在 HTMLLoader 物件中),所有 AIR JavaScript API (由 window.runtime 屬性所提供,或是在使用 AIRAliases.js 檔案時由 air 物件所提供) 都可供應用程式安全執行程序內容使用。其它安全執行程序的 HTML 內容不能存取 window.runtime 屬性,所以這項內容不能存取 AIR 或 Flash Player API。 在 AIR 應用程式安全執行程序中執行的內容,存在以下額外的限制:
AIR 中 JavaScript 的限制非應用程式安全執行程序中的 JavaScript 內容與應用程式安全執行程序中的內容不同,此 JavaScript 內容「可以」隨時呼叫 eval() 函數,執行以動態方式產生的程式碼。不過,在 AIR 中,在非應用程式安全執行程序中執行的 JavaScript 會有一些限制。包括:
如需詳細資訊,請參閱不同安全執行程序中內容的程式碼限制。 設定本機 SWF 檔的安全執行程序類型電腦的使用者或系統管理員可以指定本機 SWF 檔為受信任,允許它從所有網域 (包括本機和網路) 載入資料。這是在「全域 Flash Player Trust」和「使用者 Flash Player Trust」目錄中指定。如需詳細資訊,請參閱系統管理員控制和使用者控制。 如需有關本機安全執行程序的詳細資訊,請參閱本機安全執行程序。 Adobe Flash Professional您可以在編寫工具中設定文件的發佈設定,以設定「具有檔案系統的本機安全執行程序」或「具有網路連線的本機安全執行程序」的 SWF 檔。 Adobe Flex您可以在 Adobe Flex 編譯器中設定 use-network 標籤,以設定「具有檔案系統的本機安全執行程序」或「具有網路連線的本機安全執行程序」的 SWF 檔。如需詳細資訊,請參閱「建置及部署 Adobe Flex 3 應用程式」中的「關於應用程式編譯器選擇」。 Security.sandboxType 屬性SWF 檔的作者可以使用唯讀的靜態 Security.sandboxType 屬性,判斷 Flash Player 或 AIR 執行階段指定給 SWF 檔的安全執行程序類型。Security 類別包括代表 Security.sandboxType 屬性可能值的常數,如下所示:
|
|