2011-01-14 13 views
1

私のPHPスクリプトは$ _SERVER ['HTTP_HOST']が私のサーバのIPとは何の関係もないIPと同じです。

誰かが簡単に説明できますか?

(私はいくつかのボットがcompletly間違ったホストヘッダーを送信して考えていたが、私はそれが間違っているホストヘッダーを使用してサーバーに接続することができるとは思わない= /)

THX

+0

そのIPは何ですか? – BoltClock

+0

これは仮想サーバーかホストされた環境ですか?そうであれば、IPの可能性が最も高くなります。 – SRM

+1

通常のHTTPライブラリはそうではありません。しかし、ボットは実際にあなたのサーバーへのソケット接続を開き、偽の 'Host:87.31.159.22'ヘッダーを含むことができます。 – mario

答えて

9

HTTP_HOSTは、HTTPリクエストのHost:部分にクライアントによって提供されます。それは私が誰がしたいのか分からないが、任意に変更することができる。 the manual pageを参照してください。

代わりに$_SERVER['SERVER_NAME']を使用してください。これは、サーバー自体によって定義されます。

+0

理由については、HOST * localhost *とmy *サブドメイン*でヒットします。ハッカーは、許可されていないコンテンツへのアクセスを得るためにサーバホストに基づく条件を探します。 – Kareem

3

HostヘッダWebサーバーに接続することとはまったく関係がありません。一度接続されると、HTTP会話を特定の仮想ホストにルーティングするためにWebサーバーによって使用されます。スクリプトが入っている仮想ホストがデフォルトの仮想ホストである可能性があります。その場合、他の仮想ホストと一致しない場合は、HTTP会話がそのホストにルーティングされます。

+0

ホストされている環境にいるのか、VPSを使用しているのか尋ねたとき、私は何を得ていたのですか。 HTTP_HOSTはその場合のIPとは常に異なります(少なくとも私が現在持っている3つのホスティングアカウントでは)。 – SRM

関連する問題