xoopsを使っているとXOOPS_TRUST_PATHを使う時があると思います。
私は超ミスってました><
XOOPS_TRUST_PATHを置くとこは、他の人に見られない場所にしなくてはいけなかったのです。
サーバによっては(レンタルサーバ)ドキュメントルートにしか置けない場合があると思います。
外部に置けるなら外部に置くのが一番よいです。
XOOPS_TRUST_PATH とは、PHP定数でmainfile.phpで定義することになっています。
書き方は、
define(‘XOOPS_TRUST_PATH’,’/home/yourhome/xoops_trust_path’);
xoops_trust_pathのディレクトリ名はわからない様に変えてもおkです。
PEAK XOOPS さんの XOOPS_TRUST_PATHの記事によると
XOOPSでもosCommerceでも、古いタイプのOSS系PHPアプリケーションは大抵、DocumentRootの下にすべてのファイルを展開する形になっています。実はこれ、かなり危ないことで、インクルード専用のファイルをダイレクトにアクセスされることで、思わぬ脆弱性につながりかねません。
過去にもAgenda-Xというモジュールでこういう事例があり、簡単にApache権限を持って行かれました。そこまで酷くないにしても、インクルード専用のファイルをDocumentRootの内側に置くと、特に明示的な対応をしない限り、ほとんどのケースでPath Disclosureとなってしまいます。
とありました。なるほどードキュメントルートに大事なファイルとかあると危ないんですね!
最善の方法はやっぱりドキュメントルート外にPHPファイルを追い出すのが望ましいようです。
この問題に対する最善の対策は、DocumentRootの外にPHPファイルを追い出すことです。まっとうなPHPフレームワークでは、たいていこの様な作りになっています。DocumentRoot内に置かれるべきPHPファイルは、index.php一個だけ。ロジックの本体はすべてDocumentRoot外に置く。あとは、イメージファイルやCSS, JavaScriptなどを、DocumentRoot内に置く。このような作りが正しいはずです。
事実として、XOOPSはそのような作りになっていないので、少しでもそういう作りにしよう、というのがXOOPS_TRUST_PATHの主旨です。そして、XOOPS_TRUST_PATHを使えば、セキュリティ以外にもこんなメリットがあるよ、ということを示したのが、Duplicatable V3です。
XOOPS_TRUST_PATHは、DocumentRootの外に作る必要があります。それも専用に作るべきです。
もし、ホスティングサービスの事情で、DocumentRoot外にファイルを一切置けない場合は、.htaccessで、XOOPS_TRUST_PATHごと、DENY ALL してください。それだけでもほとんど同じ効果が得られます。
この間使った時は、そこまで調べてませんでした;
反省!
早速、外部には置けないのでhtaccessで制御しに行ってきます!
え〜っと。。
DENY ALLにする方法
order deny,allow deny from all
htaccess記述方法
http://www.tagindex.com/other/htaccess.html
xoops_trust_path フォルダにアクセスができないことを確認する。
アクセスした場合に、403 または 500 error になることを確認する。
詳しくは
概念とか
設置方法
コメント