PHP 変数 $_SERVER['SERVER_NAME'] は偽造または偽造できますか? フォーム投稿のセキュリティ対策として使用する予定でした。変数がサイト名 (www.example.com) であることを確認します。HTTP_REFERRER が偽造される可能性があることは知っていますが、これについては確信が持てませんでした。
ありがとう!
PHP 変数 $_SERVER['SERVER_NAME'] は偽造または偽造できますか? フォーム投稿のセキュリティ対策として使用する予定でした。変数がサイト名 (www.example.com) であることを確認します。HTTP_REFERRER が偽造される可能性があることは知っていますが、これについては確信が持てませんでした。
ありがとう!
実際、$_ SERVER ['SERVER_NAME'] は、クライアント ブラウザが送信する内容の影響を受ける可能性があります。問題。
訪問者は、通常、偽造することはできません。しかし、特定のドメインでのみ使用できるように、特定の SERVER_NAME を強制してスクリプトのライセンスを取得する必要があると思います。この場合、答えは「はい」です。この変数は間違いなく偽造できます。
理由は単純で、サーバーがこの値を設定します。ほとんどの場合、PHP を Apache モジュールとして実行しますが、他の Apache モジュールを使用することもあれば、PHP を NGINX または IIS を使用して CGI モードで実行することもあれば、カスタムによって子プロセスとしてフォークされた CLI として PHP を実行することさえあります。 -クラウドに展開された構築済みサーバー。これらのサーバーは、その変数の設定を担当します。
さらに、常に手動割り当てがあります。
$_SERVER['SERVER_NAME'] = ... // this can go above all your scripts
偽造することはできませんが、常にサイト名が返されます。同じスクリプトから複数のサイトを実行していて、たとえば、提供されたホスト名に応じて異なるデータベースを使用している場合に便利です。
PHPのドキュメントには次のように書かれています:
'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.