質問: CakePHPやWordPressなどをインストールする際、多くの書籍やWebサイトでは、ドキュメントルート以下に設置するように書かれています。個人的に、すごく気持ち悪いのですが、仕方なくドキュメントルートに設置しています。 Railsの場合、シンボリックリンクをドキュメントルート以下に設定し、実態は/var以下などに設置するようにしていました。 PHPのフレームワークやCMSツールでも、ドキュメントルート以外に設置することは可能なのでしょうか。また、可能である場合、ドキュメントルートに設置する場合と、シンボリックリンクを貼る場合では、リスクはどう異なるのでしょうか。教えてください。
回答: ドキュメントルート以下に置く必要はありません。 CakePHPに関してですが、以下のサイトのようにすることでできます。 セキュリティということに関してですが、適切に設計されたフレームワーク上で、適切なプログラムを書いてあれば、問題はないとは思います。 CakePHPにおいては、たとえば、ドキュメントルート以下にすべておいたとしても、.htaccessに記述したmod_rewriteの制御によって実質的には、app/webroot以下にしかアクセスされません。 ただ、悪いところを強いてあげるのであれば、これはあくまで適切な環境下だということです。 httpd.confでAllowOverwriteが拒否してあるために、.htaccessが有効でない .htaccessの記述を間違った場合に、想定外のファイルにアクセス可能となる。 という可能性はあるかと思います。 その際に、テスト用に何か見せたくない情報を表示するスクリプトが残っていた、アタックの原因となるスクリプトにアクセスを許してしまう、想定外のデータを作成してしまうスクリプトがある、などの状況下であれば、それがセキュリティ的な問題を引き起こす可能性はゼロではないと言えるかとは思います。 この他に想定するのであれば、OSレベルでのファイル管理の関係の問題もあるかもしれません。 ファイルアップロードなどの関係で、ドキュメントルートには比較的緩いOSレベルでのアクセス制限をかけておいて、/varなどのシステムディレクトリには、比較的厳しいOSレベルでの制限をかけているのであれば、万が一ハックされた際の影響範囲なども変ってくるということもあるかもしれません。 配備する環境によっては、この他の懸念事項もないとは言えないと思います。 このようなことに意識を向けて、システムを検討すること自体はよいことだとは思いますが、 適切に管理している限り、このようなリスクを考えることよりも、フレームワークが推奨する方法で配備する方が、トラブルも少なく、いろいろな面でメリットが多いのではないかと思います。 何かの参考になれば。