Security属性は、iFrameソースに実装されたJSを無効にすることによりiFrameでのXSS攻撃を防ぐために実装されました。したがって、XSS攻撃を実際に排除するだけでなく、フレームバスター、キラーなどのセキュリティスクリプトも無効にします。
たとえば、次の3つのページがあります。
被害者のページ
<html>
<head>
<script type="text/javascript">
if(top != self) top.location.replace(location);
</script>
</head>
<body bgcolor="red">
<img src="kitten.jpg" width="100%" height="100%">
</body>
</html>
このページには非常に貧弱なフレームバスターが含まれていますが、このデモには十分です。ページが彼のウィンドウの一番上のフレームでない場合は、ウィンドウをページの場所にリダイレクトします。
Aページ
<html>
<body>
<center><iframe src="noIFrame.htm" border=1> </center>
</body>
</html>
このページには、セキュリティ属性を有効にせずに、攻撃者がiframeを使用してページを追加した場合の例が含まれています。このページを開くと、クリックジャッカーページが一目でわかり、ブラウザがページの場所にリダイレクトされます。
Bページ
<html>
<body>
<center><iframe src="noIFrame.htm" security="restricted" border=1></center>
</body>
</html>
最後に、このページでは、セキュリティ属性の実装を示します。 iFrameが読み込まれ、属性が制限に設定されているため、フレーム無効化スクリプトはブラウザを被害者のページの場所にリダイレクトしていません。この攻撃はIE8以降でのみ実行可能であることに注意してください。
次に、悪意のあるユーザーが被害者のWebサーバーにファイルをアップロードできると想定します(X-Frame-Optionsの可能な使用法を理解して無効にします)。被害者はどのようにしてWebサイトを彼のIEユーザー?
* これは架空の質問です。もちろん、攻撃者がWebサーバードメインにアクセスできる場合、攻撃方法は異なります。
IEが古すぎてX-Frame-Options
をサポートできないバージョン)でクリックジャッキングを防ぐ唯一の方法は、ページをJavaScriptに依存させることです。これにより、security="restricted"
で実行するとページが壊れます。 。 例えば:
<style type="text/css">
body.notframed #warning { display: none; }
body.framed #content { display: none; }
</style>
<body class="framed">
<script type="text/javascript">
if (top==self)
document.body.className= 'notframed';
</script>
<div id="content">
...
</div>
<div id="warning">
This site cannot be used in a frame or with JavaScript disabled.
</div>
</body>
明らかに、これはアクセシビリティに非常に悪い影響を与えます。問題のサイトがJSなしですでに機能しない場合は、それは許容できるかもしれませんが、通常はそれだけの価値はありません。
(また、「非常に貧弱」なフレームバスターのようにトップページをリダイレクトしようとするのではなく、ページを使用不可にする戦術も示しています。実際、リダイレクトオプションは安全にすることができません。)
最後のコメントが何を指しているのかわかりません-X-Frame-Options
はファイルのアップロードを妨げませんが、唯一の問題であるサイト(サードパーティまたはファーストパーティ)からのフレーミングから保護するためにうまく機能します古いバージョンのIEでのサポートの欠如です。