ページの読み込み中に自分のページがフレームとして他のサイトに埋め込まれていることを確認するにはどうすればよいですか? リファラーリクエストヘッダーはここでは役に立たないと思いますか? ありがとう。
9 に答える
サーバー側から確認することはできませんが、ページが読み込まれた後に JavaScript を使用して検出できます。とを比較top
してself
、同じでない場合は、フレームに入っています。
さらに、最新のブラウザーの中にはX-FRAME-OPTIONS
、2 つの値を持つことができるヘッダーを尊重するものがあります。
- DENY – ページがフレームに含まれている場合、ページがレンダリングされないようにします
- SAMEORIGIN – ページがトップレベルのフレームセット ホルダーと同じドメインに属していない限り、上記と同じです。
ユーザーには、フレームに埋め込むことができない Google の Picasa が含まれます。
最小バージョンのヘッダーをサポートするブラウザー:
- IE8 と IE9
- オペラ 10.50
- サファリ4
- クローム 4.1.249.1042
- Firefox 3.6.9 (古いバージョンのNoScript )
Stackoverflowには、それをテストするためのJSが含まれています(master.js
)。これはそれに関連する部分です:
if(top!=self){
top.location.replace(document.location);
alert("For security reasons, framing is not allowed; click OK to remove the frames.")
}
ただし、JSを無効にできることに注意してください。
最新のブラウザーでは、標準である CSP (コンテンツ セキュリティ ポリシー) を使用できます。次のヘッダーは、ドキュメントがどこのフレームにも読み込まれないようにします。
Content-Security-Policy: frame-ancestors 'none'
(ただし、IE 11 にはX-
プレフィックスが必要です)。'none'
自分のサイトなど、フレーミングが許可されているオリジンに変更することもできます。
古いブラウザーをカバーするには、これを@Maerlyn's answerと一緒に使用するのが最適です。
javascriptを使用してiframeにページが読み込まれないようにすることができます
<script type="text/javascript">
if ( window.self !== window.top ) {
window.top.location.href=window.location.href;
}
</script>
このコードは、ページの iframe のコンテナーのアドレスをページ アドレスに変更し、コンテナーに強制的にページを表示します。
または、一部の場所ではコンテンツを気にしないが、特定のサイトではコンテンツを使用したくない場合は、特定のドメインをブロックできます。たとえば、offendingdomain.com
コンテンツを埋め込む場合は、次のようにすることができます。
<script type="text/javascript">
if(document.referrer.indexOf("offendingdomain.com") != -1) {
window.location = "http://www.youtube.com/watch_popup?v=oHg5SJYRHA0";
}
</script>
offendingdomain.com
これにより、親ドキュメントの場所がチェックされ、コンテンツが埋め込まれているかどうかが確認されます。このスクリプトは、その iframe を特定の有名な YouTube ビデオに罰として送信します。事実上、彼らは自分自身をリックロールしただけです。
javascriptを使用して、phpファイルの最後に次のスクリプトを配置してiframeに読み込まれたかどうかを確認し、警告を表示するページにリダイレクトするか、iframeを使用してページを読み込まないように注意してください。
<script type="text/javascript">
if(top.location != window.location) {
window.location = '/error_iframe.php';
}
</script>
ヘッダーの上でこのPHPコードを使用しています
if($_SERVER['SERVER_NAME'] != 'yourwebsite.com'){
header('location: yourwebsite.com');
}
誰かがあなたのサイトをiframeした場合、あなたのウェブサイトにリダイレクトされます