<iframe>は別のHTMLドキュメントをページ内に埋め込みます(マップ、ビデオ、支払いウィジェット、または信頼できないユーザーコンテンツなど)。埋め込まれたページは独自のスクリプトを実行できるため、sandbox属性がそれを安全に埋め込むための鍵となります。
html
sandboxに値がない場合、最大限の制限が適用されます:スクリプトなし、フォームなし、ポップアップなし、コンテンツを一意のオリジンとして扱います。その後、トークンをリストして選択的に機能を再度有効化します:
<iframe sandbox></iframe> <!-- locked down: scripts disabled, etc. -->
<iframe sandbox="allow-scripts allow-forms allow-popups"></iframe>
一般的なトークン:
allow-scripts — JavaScriptの実行を許可します。allow-forms — フォーム送信を許可します。allow-same-origin — そのオリジンを維持します(これがないとnullオリジンになり、ストレージ/クッキーがブロックされます)。allow-popups、allow-modals、allow-top-navigation。セキュリティに関する注意: allow-scripts と allow-same-originを組み合わせると、同一オリジンのフレームは独自のsandboxを削除できます — 信頼できないコンテンツではこの組み合わせを避けてください。
<iframe
referrerpolicy="no-referrer"
allow="camera 'none'; geolocation 'none'"
></iframe>
Iframeは、制御していない信頼できないサードパーティまたはユーザー生成コンテンツを埋め込みます。sandbox(デフォルトで拒否、必要なものだけを許可)とreferrerpolicy/allowによって、そのコンテンツを制限でき — 不要なスクリプトの実行、ページへのナビゲーション、またはデバイス機能へのアクセスを防ぎます。
アクセシビリティのためにtitleを追加し、パフォーマンスのためにloading="lazy"を追加してください。