Iframeが危険であり、セキュリティリスクと見なされるのはなぜですか?誰かが悪意を持って使用できる場合の例を説明できますか?
別のドメインのコンテンツを表示するとすぐに、基本的にそのドメインがマルウェアを提供しないことを信頼します。
Iframe自体に問題はありません。 iframeのコンテンツを制御する場合、それらは完全に安全です。
IFRAME
要素は、あなたのサイトが敵対的なサイト上のIFRAME
内に埋め込まれている場合、セキュリティリスクになる可能性があります。詳細については、Googleの「クリックジャッキング」。 youが<iframe>
を使用するかどうかは関係ありません。この攻撃からの唯一の本当の保護は、HTTPヘッダー X-Frame-Options: DENY
を追加し、ブラウザがその仕事を知っていることを期待することです。
さらに、サイト上のページに悪用される可能性のあるXSS脆弱性が含まれている場合、IFRAME要素はセキュリティリスクになる可能性があります。その場合、攻撃者はXSS攻撃を、XSS脆弱性のあるページの<iframe>
内にロードするように誘導できる同じドメイン内の任意のページに拡大できます。これは、同じOrigin(同じドメイン)からのコンテンツが親コンテンツDOMにアクセスすることを許可されているためです(「ホスト」ドキュメントでJavaScriptを実際に実行します)。この攻撃からの唯一の本当の保護方法は、HTTPヘッダーX-Frame-Options: DENY
を追加すること、および/またはすべてのユーザーが送信したデータを常に正しくエンコードすることです(つまり、サイトにXSS脆弱性がない-言うよりも簡単です)。
それが問題の技術面です。 さらに、ユーザーインターフェースの問題があります。ユーザーがリンクをクリックしてもURLバーが変わらないことを信頼するようにユーザーに教える場合(たとえば、サイトはすべての実際のコンテンツで大きなiframeを使用します)、実際のセキュリティの脆弱性の場合でも、ユーザーは将来何にも気付かないでしょう。たとえば、サイト内にXSS脆弱性があり、攻撃者がiframe内の敵対的なソースからコンテンツをロードできるようにする可能性があります。 URLバーは以前の動作と同じように見え(変更されない)、コンテンツはユーザー資格情報を要求する悪意のあるドメインからでも「有効」に見えるため、誰も違いを見分けられません。
サイトで<iframe>
要素を使用すると危険であり、セキュリティリスクを引き起こすと誰かが主張する場合、彼は<iframe>
要素が何をするのか理解していないか、ブラウザーで<iframe>
関連の脆弱性の可能性について話している。ブラウザに脆弱性がない限り、<iframe src="...">
タグのセキュリティは<img src="..."
または<a href="...">
と同等です。適切な脆弱性がある場合は、<iframe>
、<img>
、または<a>
要素を使用しなくてもトリガーできる可能性があるため、この問題を考慮する価値はありません。
ただし、<iframe>
のコンテンツはデフォルトでトップレベルのナビゲーションを開始できることを警告されます。つまり、<iframe>
内のコンテンツは、現在のページの場所に自動的にリンクを開くことができます(新しい場所はアドレスバーに表示されます)。それを避ける唯一の方法は、値allow-top-navigation
なしで sandbox
属性を追加することです。たとえば、<iframe sandbox="allow-forms allow-scripts" ...>
。残念ながら、サンドボックスはすべてのプラグインも常に無効にします。たとえば、すべてのYoutubeコンテンツを表示するにはFlashプレーヤーが必要なため、Youtubeコンテンツをサンドボックス化することはできません。プラグインの使用とトップレベルナビゲーションの禁止を同時にサポートするブラウザはありません。
X-Frame-Options: DENY
は、クロスオリジンのコンテンツを読み取ることができるレンダリングパフォーマンスのサイドチャネル攻撃からも保護することに注意してください(「 Pixel perfect Timing Attacks 」とも呼ばれます)。
クロスドメインiFrameを想定しているのは、おそらく自分で制御すればリスクが低くなるからです。
「危険」と「セキュリティリスク」は、人々がiframeに言及したときに頭に浮かぶ最初のものではありませんが、 clickjacking 攻撃で使用できます。
iframはクロスフレームスクリプティングに対する脆弱性でもあります " https://www.owasp.org/index.php/Cross_Frame_Scripting "