0

さまざまなウェブサイトにiframeがあります。私のjsでは、別のドメインのphpファイルにぶつかっています。iframeがホストされているサーバーのドメイン名を取得する方法はありますか?(これは、他の人が私のphpファイルにぶつかるのを防ぐためです)。

例。 私のウェブサイトがに埋め込まれている場合、私はと呼ばれるドメインwww.domain.comと別の呼び出しを持っています。私のjs呼び出しが、危険なWebサイトからではなく、発信されていることを確認する方法はありますか?www.phpscript.comyahoowww.domain.com

$_SERVER['REMOTE_HOST']$_SERVER['REMOTE_ADDR']この状況では機能しません。REMOTE_ADDRユーザーにIPを提供し、REMOTE_HOSTを返しyahooます。

4

2 に答える 2

2

フレーム間での対話を許可したいが、ドメインのサブセット内でのみ許可したい場合は、コンテンツセキュリティ保護拡張機能を使用する必要があります。現在、これはFirefoxとChrome(MISEではなく、SafariやOperaなどについては知らない)でのみ実装されていますが、w3c標準であるため、最終的には全員が参加することを期待してください。

したがって、example.comで実行されているphpスクリプトの場合、other.comからのアクセスを許可します(またはその逆)。

$ok="'self',*.other.com,*.example.com";
$policy="default-src $ok; frame-ancestors: $ok";
header("X-Content-Security-Policy: $policy");
header("X-Webkit-CSP: $policy");
header("Content-Security-Policy: $policy");

注意:CSPを有効にすると、他にも影響があります。

于 2012-06-22T08:37:22.717 に答える
0

編集:

OPは、私が最初に質問を解釈したこととは逆のことをしたかった.

サイトがiframe 内にない場合にサイトにアクセスできないようにするには、次を使用できます。

<script type="text/javascript">
if (window.top === window.self) {

    window.self.location = 'about:blank'; 
    window.self.onload=function(evt){ 
        window.self.location = 'about:blank'; 
        document.body.innerHTML=''; 
    };
    document.body.innerHTML='';
}
</script>

これには JavaScript を有効にする必要があり、iframe の外部でページにアクセスすると、ページが空白になり、about:blank (なし) にリダイレクトされます。


ページがiframe内にあるときにページにアクセスできないようにするため(元の回答、まだ役に立ちます)。

ヘッダーX-Frame-Options: SAMEORIGIN (Google の機能)を送信して、ドメインにないフレームにコンテンツを表示しないようにブラウザーに要求できます。

PHP

header('X-XSS-Protection: 1; mode=block');
header('X-Frame-Options: SAMEORIGIN');

さらに、JavaScript を使用してこれを回避し、iframe を介したサイトへのアクセスを停止することもできます。

if (window.top !== window.self) { 
    window.self.location = 'about:blank'; 
    window.self.onload=function(evt){ 
        window.self.location = 'about:blank'; 
        document.body.innerHTML=''; 
    }; 
    document.body.innerHTML='';
}

これらの方法はどちらもブラウザーのサポートに依存していますが、何もないよりはましです。

于 2012-06-22T04:17:13.750 に答える