技術的な問題により、iframeへの移行を検討しています。 iframeに移行することで、技術的な問題の管理が容易になります。しかし、iframeのセキュリティへの影響については完全に確信が持てません。
私たちのウェブサイトはSSLを介してレンダリングされ、ユーザーは私たちのサイトからSSL上のリンクをクリックする必要がある場合があります。
Iframeの原点が同じで、X-Frame-Options: sameorigin
ヘッダーを削除する必要がない、または Clickjacking が問題ではないと想定します。 (指定された許可元トークンがありますが、古いブラウザはそれをサポートしていません)。
フレームの使用に関する残りの主な問題は、ユーザーがドメインをアドレスバーに表示したまま信頼できないコンテンツを表示になる可能性があることです。たとえば、target="_top"
属性が欠落しているリンクがある場合や、意図的に外部コンテンツを表示したい場合があります。
この外部コンテンツには、たとえば、「セッションの有効期限が切れています。もう一度ログインしてください」というフォームのレイアウトが表示される場合があります。アドレスバーにドメインが表示されます。
Iframeに関する一般的なセキュリティの問題は clickjacking です。この問題は一般的に x-frame-options http応答ヘッダーを使用することで軽減されます。 iframeできるページを制限することが重要です。ユーザーがパスワードを変更したり、設定を変更したりできるページには、x-frame-optionに「deny」を設定する必要があります。
Iframeを使用することには、大きなセキュリティ上のメリットがあります。たとえば Google+ボタンは、セキュリティのためにiframeのOrigin継承ルールに依存しています 。
iFrameは、実装方法やコンテンツの配信場所に応じて、多くのセキュリティ問題を引き起こす可能性があります。
Rookが言及したiFrameオプションの詳細は次のとおりです
allow-forms
これが有効になっている場合、iFrameは情報をフィッシングしたり、Webサイトのログインフォームを装ったりする可能性があります。
allow-scriptsスクリプトの許可が有効になっている場合、フォームは許可されるため、許可フォームを設定しても意味がありません。 JavascriptによりDOMに作成
IFrameでスクリプトを許可すると、DoS攻撃を実行したり、ブラウザーのダイアログを開いたり、他のユーザーに情報を公開したり(参照属性)、外部オブジェクトをロードしたりする可能性があります。
allow-top-navigation
この権利により、iFrameは埋め込みサイトとして機能したり、ユーザーの資格情報をフィッシングしたりできます。
allow-same-Origin
この属性は、ソースから変更されていない未加工のHTMLドキュメント(HTMLメールなど)を表示することを目的としています。問題は、URLが予測可能であり、攻撃者がユーザーにiFrameを直接表示させることができる場合、サンドボックスのプロパティが失われることです。さらに悪いことに、開かれたWebページはopener
オブジェクトをトラバースし、ソースページに関するプロパティを発見する可能性があります。
最後に、常にサンドボックス環境で表示する必要があるコンテンツに対してtext/html-sandboxed
というMIMEタイプの提案がありますが、多くのブラウザはこれを誤って解釈し、データを通常とは異なる方法で表示します(通常は悪いことです)。
そのアプリケーションを保護するには、次の2つを実装する必要があります。
1)ApacheでX-frame-Optionヘッダーを追加します。
_echo "Header always append X-Frame-Options SAMEORIGIN" >> /etc/Apache2/httpd.conf && a2enmod headers && service Apache2 restart
_
2)古いブラウザ用のフレームバスティングJavascriptコードを追加します。
注意! if (_top == _self)
はBADフレームバスティングコードです!
こちらをご覧ください 、フレームバスティングの例が多数あります(OWASPビデオ)。