2012-07-09 13 views
5

PHP変数$ _SERVER ['SERVER_NAME']を偽造することはできますか?私はフォームの投稿のためのセキュリティ手段としてそれを使用することを計画していました。変数が自分のサイト名(www.example.com)であることを確認します。私はHTTP_REFERRERが偽造されるかもしれないことは知っていますが、私はこれについてはわかりませんでした。

ありがとうございます!

+1

あなたのサーバーは常に同じです。リクエストが送信されたサーバーではありません。 – sachleen

答えて

2

それは偽造することはできません、persay、それは常にあなたのサイト名を返します。複数のサイトを同じスクリプトから実行している場合や、提供されたホスト名に応じて別のデータベースを使用する場合などに便利です。

PHP documentationは言う:

'SERVER_NAME' 
    The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host. 
+3

'SERVER_NAME'と' HTTP_HOST'を混同しています。 – BalusC

3

訪問者は、通常、偽装することはできません。しかし、特定のドメインでのみ使用できるように、特定のSERVER_NAMEにスクリプトのライセンスを適用したいと考えています。この場合、答えはyesです。この変数は間違いなくです。

理由は簡単です、サーバーはこの値を設定します。ほとんどの場合、PHPをApacheモジュールとして実行することになりますが、他のApacheモジュールを使用することもあります.FINはCGINモードでNGINXまたはIISで実行されることもありますが、PHPをCLIで実行して、クラウドにデプロイされたサーバー。これらのサーバーは、その変数の設定を担当します。

さらに、手動割り当てが常にあります。

$_SERVER['SERVER_NAME'] = ... // this can go above all your scripts 
関連する問題