- PR -

apacheヘッダ情報について

1
投稿者投稿内容
kanwa
会議室デビュー日: 2002/12/06
投稿数: 9
投稿日時: 2002-12-18 16:45
apacheのヘッダ情報を調べたら、バージョンによる以下の二つケースがあるようです。
ケース1
HTTP/1.1 400 Bad Request
Date: Wed, 18 Dec 2002 06:10:33 GMT
Server: Apache/1.3.27 (Unix) PHP/4.2.2
Connection: close
Content-Type: text/html; charset=iso-8859-1

ケース2
HTTP/1.1 501 Method Not Implemented
Date: Wed, 18 Dec 2002 06:31:21 GMT
Server: Apache/1.3.17 (Turbolinux) PHP/3.0.18-i18n-ja-2
Vary: accept-language,accept-charset
Allow: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACE
Connection: close
Content-Type: text/html; charset=iso-8859-1
Expires: Wed, 18 Dec 2002 06:31:21 GMT

ケース2の場合Allow:の行が出てくるということは気になります。ケース2の場合はturbolinux6.5の場合です。apacheのバージョンアップしないで、allowの行を隠すことはできるでしょうか?よろしくお願いします。

[ メッセージ編集済み 編集者: kanwa 編集日時 2002-12-18 16:46 ]

[ メッセージ編集済み 編集者: kanwa 編集日時 2002-12-18 16:51 ]
トラちゃん
会議室デビュー日: 2002/07/09
投稿数: 5
投稿日時: 2002-12-19 11:37
apacheをインストールしたディレクトリ/conf/httpd.conf

のどこか(たとえばVirtualHostディレクティブとか)に

ErrorDocument 501 /501.html

などと指定して、エラーに対するメッセージファイルを指定しておけば大丈夫かと。
この方法はあくまで「クライアントが要求してきたメソッドが実装されていないことを通知する」
ためのコード(501)を返す場合に指定したファイルを送る方法です。一応Allowヘッダを返さなくは
なりますが、他のエラーコードも対応する必要があります。
#どのエラーのときに返すかまでは追いかける気力はないです

それに、OPTIONSメソッドを要求されてしまうと正常応答(200 OK)なので、この方法では対応
できません。どうしても表示したくないのであれば、ソースを眺めて改造しないと実現できません。

なお、試した環境はFreeBSD + apache-1.3.26 です。
kanwa
会議室デビュー日: 2002/12/06
投稿数: 9
投稿日時: 2002-12-19 13:08
ありがとうございます。

この手法で確かめましたが、(head / http)に対して隠せません。ソースを直さないといけませんかな。

ちなみに、ErrorDocument 501 /501.htmlではなく、ErrorDocument 501 "何か"にするなら、ヘッダ情報の下部、htmlページの部分を隠せますが、上部やはり出てくるのです。

apache 1.3.27ではAllowの行は出ないようです。



[ メッセージ編集済み 編集者: kanwa 編集日時 2002-12-19 13:15 ]

[ メッセージ編集済み 編集者: kanwa 編集日時 2002-12-19 13:34 ]
noiR
会議室デビュー日: 2002/08/23
投稿数: 2
投稿日時: 2002-12-20 03:22
例示では、

ケース1
HTTP/1.1 400 Bad Request

ケース2
HTTP/1.1 501 Method Not Implemented

となっていますが、
apache1.3.27でも、エラー501(メソッド名が不正)の場合や、OPTIONSメソッドを使用した場合、Allowヘッダは出ますよ。
ただ、メソッド間違いな上、書き方も違う場合、以前は501を返答していたのが、400を返すようになっただけです。
メソッド名が不正の場合に、実装されているメソッドを通知するというのは、当然の実装かと思います。
ちなみに、httpd.confの<Limit GET>などの、AllowやDeny指示子で設定されているメソッドが漏れているわけではありません。
あくまで、apacheに実装されている全てのメソッドが列挙されているだけですので、セキュリティ的にも問題ないです。(HTTP1.1で実装されているメソッド一覧なんて、初心者向けのネットワーク本にも載っている程度の情報ですので。)

どうしても隠したいなら、
Allowヘッダを出力するCGIやPHPなどを用意して、
ErrorDocument 501 /mnl501.cgi
と指定すれば、内容を上書きできます。
ただのHTMLファイルやCGIでは、当然、ヘッダはそのままです。

もし、ビルド時に、mod_headersが組み込まれていれば、
Header unset Allow

Header set Allow "protected"
などと、httpd.confで設定することも可能です。
(ただし、Header指示子でunsetできないヘッダもあるので、やってみないとわかりません。)

[ メッセージ編集済み 編集者: yosty 編集日時 2002-12-20 03:40 ]
kanwa
会議室デビュー日: 2002/12/06
投稿数: 9
投稿日時: 2002-12-20 10:20
ありがとうございます。

mod_headersが組んでいるのですが、結果的にHeader指示子でunsetできませんでした。

しかし、とにかく大変勉強になりました。
1

スキルアップ/キャリアアップ(JOB@IT)