こんばんは
最近、WebDAVなんていうものに挑戦してみたのですが、あれはどうも難しいですね。
PHPやCGIをアップロードしてダウンロードすると実行された結果がダウンロードされたり、そもそも実行出来ちゃうなんてセキュアじゃないじゃないですか。
ということで、それを制限しようと思って調べたら、CentOSならちょっと設定を変えるだけで出来ちゃうわけですね。
RemoveHandler .cgi .php <Files ~ "\.(cgi|php)$"> Forcetype text/plain </Files>
Filesで設定しないでForcetypeだけでもいいのですが、MP3とかそういうデータもtext/plainになっちゃうのはなんだかなーって感じなので、こんな感じに。
でも私は、そもそもPHPとかCGIとかアップロード禁止にしちゃえば問題ないじゃん!みたいな考えをしてしまったわけです。
ま、調べてもなかなか見つからない。
というか、本来はそういう使い方をするもんじゃないんだと思います。WebDAVは。
でも、ここは意地でも拡張子ごとにファイルを制限したくなったのでちょっと頑張ってみました。
方法は簡単。指定した拡張子以外は403を出せばいいんですね。
さぁて、どうやって403を出すか。
ここまで来るには波乱万丈あったわけですが(笑)、結果的に下のような感じに。
Order deny,allow Deny from all <Files ~ "^$|^[^\.]*$|\.(txt|pdf|gif|jpg|png|mp3|wav|wmv|avi|lzh|zip)$"> Allow from all </Files>
ちなみにこの設定だとOption Indexexにしてもブラウザでは403出てしまい一覧が表示されませんが、WebDAVクライアントではOKだし、セキュアじゃね?ってことで放置します(笑)。
Filesあたりの設定ですが、まず「^$」がないとWebDAVクライアントでも一覧が習得できなくなってしまいました。次に「^[^\.]*$」がないと新規ディレクトリ作成ができませんでした。その次は許可する拡張子たちです。
こんな感じで設定すれば何とか目的を達することはできたのですが、実際の運用に使えるかどうかは全く謎です(汗)。もし実運用で使いたい場合は十分な確認の上使ったほうがいいと思います。
こんな方法あるよーとかそういう情報をお持ちの方はぜひぜひ教えてくださると、さらにセキュアなWebDAVファイル共有ができそうです。
というか、WebDAVは不特定多数でファイル共有する目的には向かないのかなーなんて。やっぱり認証やらSSLやらと一緒に、限られたユーザで使ったほうがいいのかな。