2012-02-02 11 views
0

ワイルドカードサブドメインを使用して各ユーザーにページusername.domain.comを付与しています。

ユーザー名はサインアップ時に適切に消毒されています。

この質問の目的を簡潔にするため、すべてのリクエストに対して実行される単一のPHPスクリプトがあるとします。 ...

$domain_components = explode('.', $_SERVER['SERVER_NAME']); 

...次に、tld、プライマリドメインとサブドメインをポップします。

質問は、$_SERVER['SERVER_NAME']変数、特にドメインコンポーネントの内容を潜在的に敵対的なものとして扱う必要がありますか?直感的には、PHPとApacheがこれまでに自分のコードに到達する前にできることとして、良い仕事をしていなければならないと思います(そして、this answerは変数がサーバーの制御下にあるので確認しているようですが)私は何かを見過ごすわけではない。

既知の攻撃については、$_SERVER['SERVER_NAME']で知りますか?

(私はPHP 5.3.9とApache 2.2.3を使用しています。)

答えて

0

私の理解では、$_SERVER変数は、サーバによって構築されていることである - そして、あなたのサーバがある場合を除きしたがって、外部ブラウザがその内容に影響を与えることができません妥協したそうであれば、$ _SERVERの内容はあなたの心配の中で最も少なくなります。私は、フォーム$_SERVER['HTTP...]をとるものを除いて追加することを意図した

EDIT

。あなたはそれがで設定SERVER_NAMEを信頼することができます

+1

ほとんどがそうです。 '$ _SERVER ['HTTP_USER_AGENT']'のようなものは、クライアントによって変更可能であることに注意してください。 – ceejayoz

+1

ありがとうございます。 ceejayozが指摘するように、これはクライアント制御下にある多くの$ _SERVER変数では当てはまりません。質問にリンクした答えはこれをきれいに整理しています。 http://stackoverflow.com/a/6474936/123749 – Greg

-1

:いくつかのリスクがあるように思われる

<VirtualHost *> 
ServerName server.domain.com 
ServerAlias server server2.domain.com server2 
# ... 
</VirtualHost> 
+0

これは必ずしも真実ではありません。https://stackoverflow.com/a/6474936/450127 –

0

http://shiflett.org/blog/2006/mar/server-name-versus-http-host

それは古いですが、いくつかのヒントは、そのポストです。適切なユーザーを見つけるためにクエリ内でその変数(墨塗りされた/エスケープされた!)を使用するだけで、うまくいけばそれを受け入れるのは間違っていないかもしれません。その時点でもう必要ないので、内部データだけを使用してください。

関連する問題