Simon Willison 釋出了一個名為“CSP Allow-list Experiment”的實驗性工具,展示瞭如何利用內容安全策略(CSP)保護下的沙箱 iframe 載入應用,並透過自定義 fetch() 函式攔截 CSP 錯誤。該工具的核心機制是將這些錯誤傳遞給父視窗,父視窗隨後會彈出一個對話方塊,詢問使用者是否將目標域名新增到 CSP 的 connect-src 允許列表中,並重新整理頁面以應用更改。
在演示中,沙箱 iframe 試圖連線到 https://api.inaturalist.org,但被 CSP 規則阻止。工具會捕獲這一錯誤,並在父視窗中顯示提示,使用者可以選擇新增該域名並重新整理。工具還包含一個允許列表管理介面,使用者可以在其中檢視和新增允許的 fetch() 起源,例如示例中顯示的 https://api.github.com。
這一實驗展示了 CSP 與 iframe 結合使用的靈活性和潛在的使用者互動方式,尤其適用於需要動態調整安全策略的場景。開發者可以借鑑此方法來構建更安全的 Web 應用,同時保持對第三方資源的可控訪問。