2011-12-05 45 views
0

$_SERVER['HTTP_HOST']を使用して、正しいドメインで実行されているスクリプトをチェックし、不正なドメインで実行されたときに電子メールを送信します。問題は、スクリプトが不正なドメインで実行されるという誤った警告を受け取ることがあることです。 $_SERVER['HTTP_HOST']の大文字の誤った警告です。

まず、なぜこれが起こりますか? 第2に、これは$_SERVER['HTTP_HOST']をチェックするのが安全か、それとも良い理由がありますか?

注:私は自分のコードで小文字に値を変換しませんでした。

+0

これはPHPコードですか? – home

+0

別のファイルからそれを含めるならば、それは偽装することができます... –

+0

@homeそれは$ _SERVERを使用しているでしょう。 – pgl

答えて

1

$ _SERVER ['HTTP_HOST']は、スクリプトがアクセスしたホスト名です。したがって、誰かがhttp://WWW.EXAMPLE.COM/に行くと、大文字になります。

最初にstrtolower()を使用してチェックして、小文字に変換してください。

編集:私は安全だと言っていますが、警告が1つあります:HTTP/1.0を使用するユーザーエージェントはHost:ヘッダーを提供しないので、$ _SERVER ['HTTP_HOST']は設定されません。これは起こりにくいですが、もしあなたがそれを守りたいのであれば、その可能性をコードするようにしてください。

+0

しかし、すべてのWebブラウザは自動的にドメインを小文字に変換し、大文字で入力すると警告が表示されません。 – m3hdi

+0

次に、アラートを生成するコードをいくつかのサンプル出力と共に投稿することをお勧めします。 – pgl

+0

ここにあります: \t \t $valid_domain="example.com"; \t \t if(@strpos(@$_SERVER['HTTP_HOST'],$valid_domain)===FALSE) \t \t @mail('toemail', 'alert', $_SERVER['HTTP_HOST']); \t \t // I get EXAMPLE.COM sometimes in emailed alert. m3hdi

関連する問題