在日本使用替代瀏覽器引擎
在 iOS 26.2 和以上版本中,日本的使用者可以在兩種類型的 app 中使用 WebKit 以外的瀏覽器引擎:一是提供完整網頁瀏覽器體驗的專用瀏覽器 app,二是由瀏覽器引擎管理者開發、使用內嵌瀏覽器引擎來提供 app 內瀏覽體驗的 app。
Apple 會為經過授權的開發者提供系統內技術的存取權,這些技術可支援重要功能,並協助開發者打造高效能的現代化瀏覽器引擎。這些技術包括及時編譯、多程序支援等。
然而,由於瀏覽器引擎會持續接觸到不受信任且可能具有惡意的內容,並能看到敏感的使用者資料,因此成為惡意行為者最常利用的攻擊途徑之一。為協助確保使用者的網路安全,Apple 只會在開發者符合特定條件,並承諾持續遵守多項隱私權與安全要求 (包括及時提供安全性更新,以因應新出現的威脅和漏洞) 時,授權他們實作替代瀏覽器引擎。
網頁瀏覽器引擎授權
瀏覽器 App
擁有「網頁瀏覽器引擎授權」,你就能在瀏覽器 app 中使用替代瀏覽器引擎。若想在瀏覽器 app 中使用替代瀏覽器引擎,請參閱下列要求,然後提交申請以取得「網頁瀏覽器引擎授權」。如需相關技術指引,請參閱:
要求
若要取得授權,你的 app 必須:
- 僅於日本境內的 iOS 平台發布;但若屬於 Apple 根據《開發者協議》(包含任何附錄) 明確允許的任何其他司法管轄區或 Apple 平台,且你已取得相對應的授權描述檔,則不在此限;
- 具有預設瀏覽器授權
- 符合下列功能要求,確保 app 所用的網頁瀏覽器引擎具備基本網頁功能:
- 通過業界標準測試套件中至少一定百分比的測試:
- 90% 的 Web Platform Tests
- 以 wpt.fyi 首頁上任何瀏覽器所執行的最高子測試數量為計算基準百分比;且
- 在與測試套件相容的作業系統上執行
- 在 iOS 裝置、iPadOS 裝置或配備 Apple 晶片的 Mac 上通過 80% 的 Test262 測試;且
- 如果無法使用及時 (JIT) 編譯 (例如使用者啟用了「封閉模式」),須符合上述測試套件要求。
- 通過業界標準測試套件中至少一定百分比的測試:
- 你和你的 app 都必須符合下列安全要求:
- 承諾採用安全開發流程,包括監控 app 的軟體供應鏈是否存在漏洞,並遵循安全軟體開發最佳作法 (例如對開發中的新功能進行威脅模型分析)。
- 提供已公布的漏洞揭露政策 URL,該政策須包含可供第三方 (可能包括 Apple) 向你回報安全漏洞和問題的聯絡資訊、報告中應提供的資訊,以及預計可收到狀態更新的時間。
- 承諾及時修補你的 app 或 app 所用的替代網頁瀏覽器引擎中正遭到利用的漏洞 (例如,對於正遭到主動利用的最簡單類型漏洞,須在 30 天內修補)。
- 提供公開網頁的 URL,說明哪些已回報的漏洞已在哪些特定的瀏覽器引擎版本以及相關聯的 app 版本 (若兩者不同) 中完成修補。
- 如果你的替代網頁瀏覽器引擎所用的根憑證庫不是透過 iOS SDK 存取,你必須公開根憑證政策,且該政策的擁有者必須以瀏覽器身分參與憑證授權單位/瀏覽器論壇。
- 證明可支援最新傳輸層安全性協定,以保護瀏覽器引擎使用期間傳輸中資料的通訊安全。
計畫安全要求
你必須:
- 在替代網頁瀏覽器引擎中,至少所有處理網頁內容的程式碼,都必須使用具記憶體安全性的程式設計語言,或使用可在其他語言中提升記憶體安全性的功能;
- 採用最新的安全緩解措施 (例如「指標認證碼」),以消除某些類型的漏洞,或大幅提高建立攻擊鏈的難度。這包括採用:
- 指標認證碼 (PAC);
- 記憶體完整性強制執行 (MIE),適用於 (i) 任何內容延伸功能中由系統提供的配置器,以及 (ii) 你的 app 中任何程序和延伸功能 (包括網路和算圖延伸功能) 的自訂或系統提供的配置器;
- 遵循安全設計與程式編碼最佳實務;
- 採用程序隔離以限制漏洞遭利用時的影響,並驗證替代網頁瀏覽器引擎內的程序間通訊 (IPC);
- 監控任何第三方軟體相依項目及 app 整個軟體供應鏈中的漏洞,若漏洞會影響你的 app,則須移轉至較新版本;
- 不得使用不再針對漏洞提供安全性更新的框架或軟體程式庫;
- 迅速解決已回報的漏洞,其優先順序應高於新功能開發。舉例來說,當替代網頁瀏覽器引擎在平台的 SDK 與網頁內容之間橋接權限功能以啟用 Web API 時,若識別出某個 Web API 存在漏洞,你必須依要求移除對該 Web API 的支援。大多數漏洞應在 30 天內解決,但有些可能較複雜,需要更長的時間。
計畫隱私權要求
你必須:
- 預設封鎖跨網站 cookie (即第三方 cookie),除非使用者在知情同意下明確選擇允許此類 cookie,或是在彈出式視窗與其開啟視窗中的頁框進行互動時,因相容性需求而必須允許的情況下;
- 依頂層網站分割任何網站可觀察到的儲存空間或狀態,或阻止此類儲存空間或狀態被跨網站使用和觀察;
- 不得在你的 app 與任何其他 app (即使是同一開發者的其他 app) 之間同步任何狀態 (包括 cookie),除非使用者已明確許可同步該狀態 (透過同時登入你的 app 和另一個 app,或透過其他提供明確許可的機制);
- 不得在未經知情同意及使用者啟用的情況下,與網站分享裝置識別碼;
- 使用所提供的 API 來標示網路連線,以便在 iOS (即 app 發布的平台) 上產生「App 隱私權報告」;並且
- 針對不同類型的 Web API (例如剪貼板或全螢幕存取,包括可存取個人識別資訊 (PII) 的 API),何時需要使用者在知情情況下啟用和/或同意,須遵循普遍採用的網頁標準。
內嵌瀏覽器引擎授權
適用於 App 內瀏覽
擁有「內嵌瀏覽器引擎授權」,即可在 app 中嵌入替代瀏覽器引擎來提供 app 內瀏覽。App 內瀏覽是指動態顯示來自網頁、可在網頁瀏覽器 app 中存取與運作的內容。這不包括內嵌於 app,或只能透過 app 取得的內容。
你的 app 在提供 app 內瀏覽時,其主要目的必須是提供網頁瀏覽功能。提供 app 內瀏覽時,使用者介面必須:
- 佔據螢幕的大部分顯示區域,但保留讓終端使用者控制瀏覽工作階段的相關控制項目;
- 提供可前往系統預設瀏覽器的按鈕或連結,讓使用者可以開啟專用瀏覽器 app 來檢視目前顯示的內容;以及
- 顯示 app 內瀏覽所呈現內容的網域或 URL。
若想在 app 中使用替代瀏覽器引擎來提供 app 內瀏覽體驗,請參閱下列要求,然後提交申請,以取得「內嵌瀏覽器引擎授權」。你必須提供要內嵌的引擎相關資訊,包括該引擎如何符合要求,以及如何整合至 app 以提供 app 內瀏覽體驗。如需相關技術指引,請參閱「範例和資源」一節。
要求
若要符合授權資格,你所屬組織必須是瀏覽器引擎管理者。瀏覽器引擎管理者,指的是對營運獨立網頁瀏覽器引擎負有主要責任的實體。
- 主要責任代表你對網頁瀏覽器引擎具有營運控制權,且須在網頁瀏覽器引擎發現安全或隱私權漏洞時,對協調應變與解決漏洞負最終責任。
- 獨立網頁瀏覽器引擎,是由與其他任何網頁瀏覽器引擎不同的實體或組織維護,且其架構以及對 Web API 的支援與其他任何引擎有實質差異。該引擎通常不會透過更新來反映其分支版本所做的變更,而是將變更推送至分支版本。
App 要求
你的 app 必須符合下列要求:
- 僅於日本境內的 iOS 平台發布;但若屬於 Apple 根據《開發者協議》(包含任何附錄) 明確允許的任何其他司法管轄區或 Apple 平台,且你已取得相對應的授權描述檔,則不在此限;
- 僅將授權用於 app 內瀏覽;
- 不得具有預設瀏覽器授權
- 符合下列功能要求,以確保 app 所用的網頁瀏覽器引擎具備基本網頁功能:
- 通過業界標準測試套件中至少一定百分比的測試:
- 90% 的 Web Platform Tests
- 以 wpt.fyi 首頁上任何瀏覽器所執行的最高子測試數量為計算基準百分比;且
- 在與測試套件相容的作業系統上執行
- 在 iOS 裝置、iPadOS 裝置或配備 Apple 晶片的 Mac 上通過 80% 的 Test262 測試;且
- 通過業界標準測試套件中至少一定百分比的測試:
- 如果無法使用及時 (JIT) 編譯 (例如使用者啟用了「封閉模式」),須符合上述測試套件要求。
- 承諾採用安全開發流程,包括監控應用程式的軟體供應鏈是否存在漏洞,並遵循安全軟體開發最佳作法 (例如對開發中的新功能進行威脅模型分析)。
- 提供已公布的漏洞揭露政策 URL,該政策須包含可供第三方 (可能包括 Apple) 向你回報安全漏洞和問題的聯絡資訊、報告中應提供的資訊,以及預計可收到狀態更新的時間。
- 承諾及時修補你的 app 或替代網頁瀏覽器引擎中正遭到利用的漏洞 (例如,對於正遭到主動利用的最簡單類型漏洞,須在 30 天內修補)。
- 提供公開網頁的 URL,說明哪些已回報的漏洞已在哪些特定的瀏覽器引擎版本以及相關聯的 app 版本 (若兩者不同) 中完成修補。
- 如果你選擇的替代網頁瀏覽器引擎所用的根憑證庫不是透過 iOS SDK 存取,你必須公開根憑證政策,且該政策的擁有者必須以憑證使用方身分參與憑證授權單位/瀏覽器論壇。
- 證明可支援最新傳輸層安全性協定,以保護瀏覽器引擎使用期間傳輸中資料的通訊安全。
計畫安全要求
你必須:
- 在替代網頁瀏覽器引擎中,至少所有處理網頁內容的程式碼,都必須使用具記憶體安全性的程式設計語言,或使用可在其他語言中提升記憶體安全性的功能;
- 採用最新的安全緩解措施以消除某些類型的漏洞,或大幅提高建立攻擊鏈的難度;
- 遵循安全設計與安全程式編碼最佳實務;
- 監控任何第三方軟體相依項目及 app 整個軟體供應鏈中的漏洞,若漏洞會影響你的 app,則須移轉至較新版本;
- 不得使用不再針對漏洞提供安全性更新的框架或軟體程式庫;
- 迅速解決已回報的漏洞,其優先順序應高於新功能開發。舉例來說,當替代瀏覽器引擎在平台的 SDK 與網頁內容之間橋接權限功能以啟用 Web API 時,若識別出某個 Web API 存在漏洞,你必須依要求移除對該 Web API 的支援。大多數漏洞應在 30 天內解決,但有些可能較複雜,需要更長的時間。
計畫隱私權要求
你必須:
- 預設封鎖跨網站 cookie (即第三方 cookie),除非使用者在知情同意下明確選擇允許此類 cookie,或是在彈出式視窗與其開啟視窗中的頁框進行互動時,因相容性需求而必須允許的情況下;
- 依頂層網站分割任何網站可觀察到的儲存空間或狀態,或阻止此類儲存空間或狀態被跨網站使用和觀察;
- 不得在未經知情同意及使用者啟用的情況下,與網站分享裝置識別碼;
- 使用所提供的 API 來標示網路連線,以便在 iOS (即 app 發布的平台) 上產生「App 隱私權報告」;並且
- 針對不同類型的 Web API (例如剪貼板或全螢幕存取,包括可存取個人識別資訊 (PII) 的 API),何時需要使用者在知情情況下啟用和/或同意,須遵循普遍採用的網頁標準。
其他要求
- 每次提交二進位檔時,都必須一併提交內嵌於 app 中的替代網頁瀏覽器引擎的名稱和版本。
- App 內嵌的替代網頁瀏覽器引擎發布新版本後,你必須在十五 (15) 個日曆天內提交包含該新版本的 app 更新。
範例和資源
本節包含其他資源與範例,協助你符合使用替代瀏覽器引擎的相關要求。
安全 SDLC (軟體開發生命週期)
你須要符合的許多要求,有賴你在 app 中加入新功能時,採取以安全和隱私權為優先的作法。著手開發新功能時,你應先建立威脅模型,並規劃如何確認架構和 app 的已發布版本能夠降低已識別的風險。有許多技術可協助確認安全性,例如程式碼稽核、模糊測試,以及編寫測試來驗證你預計強制執行的資安屬性。所有網頁內容都應視為不受信任且可能具有惡意。
資源
安全緩解措施與記憶體安全性
你也應考量 iOS 或 iPadOS 提供了哪些現有的安全緩解措施,例如「指標認證碼」和「記憶體完整性強制執行」,以及哪些程式設計語言 (或語言與編譯器功能,以及其他工具) 可用來緩解你識別出的每一項威脅。例如,Swift 是預設具備記憶體安全性的語言,可協助避免許多常見的漏洞來源,以及其他與記憶體相關的軟體錯誤。然而,像 C++ 這類不具記憶體安全性的語言,也提供了可增進記憶體安全性的功能,例如 std::span。此外,也可以使用編譯器選項和工具,例如 C 語言的 -fbounds-safety 可為現有程式碼加入標註,以緩解越界記憶體存取問題,而不一定都要以預設具備記憶體安全性的語言來改寫功能。
資源
漏洞管理
你應假設瀏覽器引擎中始終存在未被發現的漏洞,或任何新功能都可能帶來非預期的風險。因此,建立相關流程相當重要,如此一來,當漏洞經由內部測試以及安全與隱私權確認作業被找出、在你的軟體供應鏈中發現,或由另一方揭露時,你才能做出回應。
為第三方 (例如安全研究人員) 提供向你回報漏洞的途徑時,應考慮須要從對方獲得哪些資訊,以便能迅速判斷問題是否成立及其原因。你也應確保已建立相關流程,以優先進行漏洞修補,並發布可能不按正常時程推出的更新。
同樣也很重要的一點是,讓使用者能快速確認哪些具有相關聯 CVE-ID 的公開漏洞已在 app (或替代瀏覽器引擎) 的哪個版本中修補。
資源
網路安全性
透過使用 iOS SDK,特別是 Network 框架和/或 SecTrust API,你在為所用的替代瀏覽器引擎評估網頁憑證信任度,以及維護或使用對應的根信任儲存庫與計畫時,便可減少須要自行承擔的責任。如果你確實有執行此類計畫,該計畫應提供相關資訊,說明根憑證授權單位 (CA) 如何申請加入計畫,以及如何回報事件 (例如根憑證授權單位的私密金鑰資料外洩),以便你能採取行動。
網頁上所用的通訊協定會不斷演進,以因應新出現的威脅,並進一步保護使用者的隱私權和安全。目前應與你的替代瀏覽器引擎相容、且尚未被淘汰的現代 TLS 版本為 TLS 1.2 和 1.3,但這些版本可能會隨時間改變。你可以在替代瀏覽器引擎中支援已停用的通訊協定,但當使用者瀏覽到僅支援這些協定的網站時,你應通知使用者。