Simon Willison 氏は「CSP Allow-list Experiment」と題した実験ツールを公開しました。このツールは、コンテンツセキュリティポリシー(CSP)で保護されたサンドボックス iframe 内でアプリケーションを読み込み、カスタム fetch() 関数を使用して CSP エラーをインターセプトする仕組みを実演しています。この仕組みでは、エラーが親ウィンドウに渡され、親ウィンドウがユーザーに対して、該当するドメインを CSP の connect-src 許可リストに追加し、ページをリフレッシュするよう促すダイアログを表示します。
デモでは、サンドボックス iframe が https://api.inaturalist.org への接続を試みますが、CSP ルールによってブロックされます。ツールはこのエラーを捕捉し、親ウィンドウ上に「サンドボックスが https://api.inaturalist.org に接続しようとしました。このオリジンを CSP connect-src 許可リストに追加してページをリフレッシュしますか?」というダイアログを表示します。ユーザーが「OK」をクリックすると、許可リストに追加され、ページがリフレッシュされます。また、ツールには許可リスト管理機能も含まれており、ユーザーは https://api.github.com などのオリジンを手動で追加することもできます。
この実験は、CSP と iframe を組み合わせた柔軟なセキュリティポリシーの適用方法を示しており、特に動的にサードパーティリソースへのアクセスを制御する必要があるアプリケーション開発者にとって参考になります。