- - PR -
apacheのHTTPメソッドの制限方法について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-08-05 17:46
apache(httpd-2.0.52)でバーチャルホストを設定し
HTTPのメソッドをGET、POST、OPTIONSのみに制限したく 以下の様に設定しました <VirtualHost xxx.xxx.xxx.xxx> DocumentRoot /home/hogehoge/html <Directory /home/hogehoge/html> <LimitExcept GET POST OPTIONS> order deny,allow Deny from all </LimitExcept> </Directory> </VirtualHost> その後 telnet にて telnet xxx.xxx.xxx.xxx 80 で OPTIONS * HTTP/1.0(Enter) (Enter) とすると以下の様なレスポンスが返って来ました HTTP/1.1 200 OK Date: Tue, 05 Aug 2008 08:30:27 GMT Server: Apache Allow: GET,HEAD,POST,OPTIONS,TRACE Content-Length: 0 Connection: close Content-Type: text/plain apacheのhttpd.confにてGET、POST、OPTIONSメソッド以外を許可しない様な 設定にしてある(と思っているのですが)にも関わらず Allow: GET,HEAD,POST,OPTIONS,TRACE となるのは何故なのでしょうか? 自分としては Allow: GET,POST,OPTIONS となるのではないかと思うのですが・・・ |
|
投稿日時: 2008-08-05 18:01
推測ですみませんが
http://httpd.apache.org/docs/2.0/ja/mod/core.html 上記の説明を見た限りでは、LimitディレクティブでTRACEメソッドに制限をかけられないと記載してありますので、 おそらく、LimitExceptでも制限がかからないのではないでしょうか? あと、LimitディレクティブでGETを制限した場合にHEADも制限されると記載されていますので、おそらくLimitExceptで GETを有効にした場合はHEADも有効になるのでないでしょうか (試しにGETを無効にして、HEADも無効になるか確認してみてはどうでしょうか) |
|
投稿日時: 2008-08-05 18:31
ゆうじゅんさんありがとうございます
試しにGETを無効にしPOSTとOPTIONSのみ有効にし telnet でOPTIONSメソッドにて確認してみたところ Allow: GET,HEAD,POST,OPTIONS,TRACE となって変わりありませんでした ただ、telnetでGETメソッドを試してみたところGETメソッド自体は 使用出来ないというか404エラーが返って来ました。 OPTIONSも無効にしてみたらOPTIONSメソッドも使用出来なくなりました ので制限自体は効いているようです。 OPTIONSメソッドで返って来るAllowは実際に使用できるメソッドでは無い と言う事みたいですね。 それならPUTやDELETEメソッドは出てこないのは何故なんでしょうね。 標準で無効だからでしょうかね。 実は今回の疑問の始まりは外部の第三者からOPTIONSメソッドによるアクセスが あったのであまり気持ちの良いものではなかったためOPTIONSメソッドを 無効にしたいという事から沸いた疑問でした ゆうじゅんさんどうもありがとうございました |
1