0

PHP他のホストからのスクリプトの実行を防ぐ最善の方法は何ですか? 基本的に、サーバーweb1.mydomain.comに PHP スクリプトを実行させるだけです。現在、別のドメインのスクリプトを指すiframeorを使用して html ファイルを作成し、それを呼び出すと、動作して実行されます。img tagこれを防ぎたい。

PHP アプリケーション コードではなく、Web サーバー レベルでこれを行うことは可能ですか? を使用してnginxいます。それが最善の解決策でしょう。

4

4 に答える 4

4

ページがドメイン外のフレームに埋め込まれないようにするために、X-Frame-Options応答ヘッダーを設定して、他のドメインのページが iframe に埋め込まれないようにすることができます (ブラウザーが従う限り)。

nginx では、これを構成に追加できます。

add_header X-Frame-Options SAMEORIGIN;

アパッチの場合:

Header always append X-Frame-Options SAMEORIGIN

https://developer.mozilla.org/en-US/docs/The_X-FRAME-OPTIONS_response_header


<img>タグについては、 を確認でき$_SERVER['HTTP_REFERER']ます。

if(isset($_SERVER['HTTP_REFERER'])){
    if(preg_match("@^http://web1.mydomain.com($|/.*)@", $_SERVER['HTTP_REFERER']) != 1){
        die;
    }
}

HTTP_REFERERこのメソッドは、ユーザー エージェントによって設定された に依存します。これはほとんどの環境で機能すると思います。残念ながら、私がテストする方法はありません。

これもAJAXをブロックすると思いますか?...

実際には、<a>タグを使用して Web ページにリンクしているユーザーもブロックするので、あまり良いものとは言えません...

于 2012-11-11T02:37:54.203 に答える
1

valid_referersこれは、 nginxディレクティブの目的の教科書の場合のように思われます。

locationスクリプトの-blockに次のようなものを追加します。

valid_referers web1.mydomain.com;

または、少し厳しくなく、削除された/難読化されたリファラーに対してより寛容になりたい場合:

valid_referers none blocked web1.mydomain.com;

詳細については、 http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referersを参照してください。

于 2012-11-11T08:41:52.243 に答える
0

Apache 構成ファイルにアクセスできる場合は、次のようなことができます。

Order Deny,Allow
Deny from all
Allow from 127.0.0.1

後で次のようなものを追加する必要があるかもしれません:

<FilesMatch "*\.(css|js|gif|jpg|png)$">
  Order Allow,Deny
  Allow from all
</FilesMatch>
于 2012-11-11T02:35:54.097 に答える
0

nginx ホスト構成を使用して実行できます。実行を許可するものを除くすべてのホストserverブロックに次のコードを挿入します。

  location /myscript {
    deny all;
  }
于 2012-11-11T02:36:42.897 に答える