開發人員的最佳安全性做法

Adobe AIR 1.0 以及更新的版本

雖然 AIR 應用程式使用網頁技術建立,開發人員應該體認到這些應用程式並不會在瀏覽器安全執行程序中運作。也就是說,所建立的 AIR 應用程式,有可能有意或是無意地傷害了本機系統。AIR 試著將此風險減到最低,但還是有可能引進攻擊弱點。本主題涵蓋重要的潛在不安全性。

將檔案匯入應用程式安全執行程序中的風險

存在於應用程式目錄中的檔案會指定給應用程式安全執行程序,並具有執行階段的完整權限。建議將寫入本機檔案系統的應用程式寫入 app-storage:/ 。此目錄會與使用者電腦上的應用程式檔案分別存放,因此檔案並不會指定給應用程式安全執行程序,而降低了安全性風險。建議開發人員考慮下列情形:

  • 僅在必要的時候,才在 AIR 檔中 (在安裝的應用程式中) 包含檔案。

  • 僅在完全了解並信任 AIR 檔的行為時,才在當中 (在安裝的應用程式中) 包含編寫指令碼的檔案。

  • 不要寫入或修改應用程式目錄中的內容。執行階段會透過擲出 SecurityError 例外,阻止應用程式使用 app:/ URL 配置寫入或修改檔案和目錄。

  • 不要使用來自網路的資料做為可能會產生程式碼執行的 AIR API 方法之參數。其中包含使用 Loader.loadBytes() 方法和 JavaScript eval() 函數。

使用外部來源決定路徑的風險

AIR 應用程式可能會在使用外部資料或內容時遭到竄改。因此,使用來自網路或檔案系統的資料時必須特別注意。信任最終都得靠開發人員及所進行的網路連線來維護,但是載入外來資料本來就會有風險,因此不該用於機密作業的輸入用途。建議開發人員防範下列情形:

  • 使用網路來源的資料以決定檔案名稱

  • 使用網路來源的資料,以建構應用程式用來傳送私有資訊的 URL

使用、儲存或傳輸不安全憑證的風險

在使用者本機檔案系統上儲存使用者憑證需要承擔憑證可能遭到竄改的風險。建議開發人員考慮下列情形:

  • 如果必須將憑證儲存在本機上,請在寫入本機檔案系統時對憑證進行加密。執行階段會透過 EncryptedLocalStore 類別,為每個已安裝的應用程式提供唯一的加密儲存。如需詳細資訊,請參閱 加密本機儲存

  • 除非來源受到信任且使用 HTTPS: 或傳輸層安全性 (TLS) 通訊協定來傳輸,否則請不要將未加密的使用者憑證傳輸至網路來源。

  • 絕對不要在建立憑證時,指定預設的密碼:請讓使用者自行建立密碼。使用者若保留預設值不變,就等於將憑證公開給已知預設密碼的攻擊者一樣。

降級攻擊的風險

應用程式安裝期間,執行階段會進行檢查,以確認應用程式版本並不是目前安裝的版本。如果已安裝應用程式,執行階段會比較版本字串與安裝中版本的版本字串。如果字串不同,使用者可以選擇升級安裝。執行階段無法保證新安裝的版本會比舊版更新,只保證當中的內容有所不同。攻擊者可能會散佈舊版給使用者,設法讓使用者落入安全性弱點的圈套中。因此,建議開發人員在執行應用程式時進行版本檢查。讓應用程式檢查網路並尋找是否有必要的更新是很好的做法。如此一來,即使攻擊者讓使用者執行舊版,該舊版也會偵測到目前版本必須進行更新。而且,應用程式若使用清楚的版本編號配置,使用者就不會輕易受騙安裝降級版本。