他の Web サイト (異なるドメイン) から自分の Web サイトにPOST要求を行うスクリプトがあり、その他のドメインを取得できるかどうかを知る必要があります。
同様に: helloworld.comは私のスクリプトを使用し、mywebsite.comでPOST要求を実行します。mywebsite.comは、リクエストがhelloworld.comからのものであることをどのように認識しますか?
で試しまし$_SERVER['REMOTE_HOST']
たが、うまくいきません。
HTTP リファラーを検査する必要があります。
PHP では、これは$_SERVER['HTTP_REFERER'];
.
JavaScript では、これはdocument.referrer
.
不正確である可能性があり、簡単に偽装される可能性があるため、その値は少し塩分を入れて使用する必要があることに注意してください。
これを確実に行う方法についてもう少し詳しく説明します(ただし、リモート サーバーの協力が必要です)。
secret
の文字列 ( abc123
) とします。key
各リクエストに固有のランダムな文字列にしましょう(例:現在の時刻)token
しmd5(secret + key)
ます。key
とtoken
(ただしは含まない) を含めます。 secret
md5(secret + key) === token
誰もシークレットを知らないため、リクエストがリモート サーバーから発信されたことを保証できます。もちろん、誰かがリモート サーバーからフォームを要求し、andを盗み、その要求を自分に転送することは可能です...key
token
を使用する必要がありますHTTP_REFERER
。しかし、それは完全に信頼することはできません
$_SERVER['HTTP_REFERER']
文書化されているここを見てください:http://php.net/manual/en/reserved.variables.server.php
使用する
$_SERVER['HTTP_REFERRER']
リクエスト元のページを取得するには
IPを保存できます。gethostbyaddr($ip)
スクリプトが自動的に実行される場合、動作し$_SERVER['HTTP_REFERRER']
ません。