XOOPS_TRUST_PATHについて

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にする方法

 

  • 以下のような.htaccess ファイルを用意し、先ほどのディレクトリ内に格納
  •  

     

    order deny,allow
    deny from all

     

    htaccess記述方法

     http://www.tagindex.com/other/htaccess.html

     

    xoops_trust_path フォルダにアクセスができないことを確認する。

    アクセスした場合に、403 または 500 error になることを確認する。

     

    詳しくは

    概念とか

    PEAK XOOPS - XOOPS_TRUST_PATH
    PEAK's XOOPS Support Site

    設置方法

    301 Moved Permanently

    コメント

    タイトルとURLをコピーしました