3

他の Web サイト (異なるドメイン) から自分の Web サイトにPOST要求を行うスクリプトがあり、その他のドメインを取得できるかどうかを知る必要があります。

同様に: helloworld.comは私のスクリプトを使用し、mywebsite.comでPOST要求を実行します。mywebsite.comは、リクエストがhelloworld.comからのものであることをどのように認識しますか?

で試しまし$_SERVER['REMOTE_HOST']たが、うまくいきません。

4

4 に答える 4

4

HTTP リファラーを検査する必要があります。

PHP では、これは$_SERVER['HTTP_REFERER'];.

JavaScript では、これはdocument.referrer.

不正確である可能性があり、簡単に偽装される可能性があるため、その値は少し塩分を入れて使用する必要があることに注意してください。


これを確実に行う方法についてもう少し詳しく説明します(ただし、リモート サーバーの協力が必要です)。

  1. を任意secretの文字列 ( abc123) とします。
  2. key各リクエストに固有のランダムな文字列にしましょう(例:現在の時刻)
  3. によって生成tokenmd5(secret + key)ます。
  4. リモート サーバーの POST 要求にkeytoken(ただしは含まない) を含めます。 secret
  5. サーバーで、次のことを確認します。md5(secret + key) === token

誰もシークレットを知らないため、リクエストがリモート サーバーから発信されたことを保証できます。もちろん、誰かがリモート サーバーからフォームを要求し、andを盗み、その要求を自分に転送すること可能です...keytoken

于 2012-07-05T15:06:57.587 に答える
1

を使用する必要がありますHTTP_REFERER。しかし、それは完全に信頼することはできません

$_SERVER['HTTP_REFERER']

文書化されているここを見てください:http://php.net/manual/en/reserved.variables.server.php

于 2012-07-05T15:07:10.940 に答える
1

使用する

$_SERVER['HTTP_REFERRER']

リクエスト元のページを取得するには

于 2012-07-05T15:07:44.027 に答える
1

IPを保存できます。gethostbyaddr($ip) スクリプトが自動的に実行される場合、動作し$_SERVER['HTTP_REFERRER']ません。

于 2012-07-05T15:08:05.017 に答える