« Pathtraq バージョンアップのおしらせ - サイドバー表示に対応 | メイン | Perl から MySQL に非同期アクセスする方法 »

2007年09月05日

サーバシグニチャは隠さないのが当たり前

ウェブサーバ(Apache)で、404などのエラーページを表示したとき、ヘッダやページの下にApacheやOSのバージョンが表示されます。こういったサーバ情報をわざわざ表示する必要はありません。

ウノウラボ Unoh Labs: 5分でできるウェブサーバのセキュリティ向上施策

私も何年も前からセミナーではサーバ、モジュールバージョンは隠すようにと言っています。何故こんな事で賛否両論になるのか全く理解できません。

yohgaki's blog - サーバシグニチャは隠すのが当たり前

 Server: ヘッダを隠すメリットについての議論はあるようですが、Server: ヘッダを表示すべき理由についての解説がないようなので、知っていることを書いておきたいと思います。

 なぜサーバのバージョン情報を公開する必要があるのか。それは、クライアント側で、サーバのバグや規格解釈の相違に起因する問題を回避するためです。たとえば Mozilla Firefox のソースコードを見てみると、IIS や Netscape Enterprise Server のバグを回避するコードが実際に含まれていることが分かります。

// the list of servers known to do bad things with pipelined requests
static const char *bad_servers[] = {
    "Microsoft-IIS/4.",
    "Microsoft-IIS/5.",
    "Netscape-Enterprise/3.",
    nsnull
};

for (const char **server = bad_servers; *server; ++server) {
    if (PL_strcasestr(val, *server) != nsnull) {
        LOG(("looks like this server does not support pipelining"));
        return PR_FALSE;
    }
}

netwerk/protocol/http/src/nsHttpConnection.cpp

 また、サーバ側でクライアントの問題に対処するために User-Agent ヘッダを使うこともあります。Apache の設定ファイルで、以下のような設定を目にしたことのある方は多いでしょう。

BrowserMatch ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

 仮に HTTP プロトコルに、製品名やバージョン番号を通知する仕組みが含まれていなかったとしたら、どうなっていたでしょう。Mozilla Firefox で HTTP Pipelining を使うことは不可能だったでしょうし(IIS サーバにアクセスできなくなるから)、HTTPS 上で HTTP/1.1 が一般的に使用されることもなかったでしょう (少なくとも古い MSIE では、問題が発生するため)。Server ヘッダと User-Agent ヘッダは、決して眺めてニヤニヤするためだけのものではなく、HTTP プロトコルの進化に欠かせない要素なのです

 Apache に限って言えば、HTTP/1.1 実装の中心にあったという経緯もあり(?)こうした相性問題は少ない(あるいはない)のかもしれませんが、これらのヘッダがどのように使われているのかという点にも触れた上で、表示するのか、削除するのか、議論してほしいと思いました。

注: もう進化しないよ、という立場はあるのかもしれません。

投稿者 kazuho : 2007年09月05日 10:27 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/1501

このリストは、次のエントリーを参照しています: サーバシグニチャは隠さないのが当たり前:

» サーバシグニチャは隠そうが隠すまいがどっちでもいいのが当たり前なので腹を切って死ぬべきだ from ひろ式めもちょう
どうしてこう、なんでも宗教論争にしちまうんだろうな…。くだらないし、見ているだけで苦痛。こんなことに時間を割いているなら他のもっと技術的におもしろいことを... [続きを読む]

トラックバック時刻: 2007年09月05日 12:29