Kousuke Taniguchi
tinse****@u01*****
2003年 6月 13日 (金) 21:36:05 JST
tinsep19です。 At Fri, 13 Jun 2003 08:45:54 +0900, Kinsan wrote: > >あいかわらずcss,クリップ画像の問題はありますが、 > >$css_uriみたいな変数を追加して絶対パス指定逃げる方法もありますし > >個人的にはこれで満足しています。 > この問題が、ちょっと分からないのですが、まず私の書いたものでは、 > cssは共通の場所に入れてあるものから選択するという思想になって > います。その場合に、path_infoの時の定義が次行です。 > $css = "../$css"; 私のものもcssは共通の場所にあるものから 選択するという方式を取っています。 ただ孫Wikiとかも作れるので、 $path_infoは/hoge/foo/barなどにもなります。 というわけで単純に一つ上のディレクトリというわけにはいきません $path_info =~ s/[^\/]/../g; で元のディレクトリを推測可能ですが、 $theme_dir='./theme' とかになっていると ../../.././theme のようになります、どうしても相対パスでという気はあまりないので 今は$theme_uri(theme_dirの絶対URL) というのを使用しています。 clip画像はfiles,refプラグインで 決め打ちになってますのでやはり$image_uriとか 用意して多少手を入れる位しか今は思いつきません。 > ところで、変数path_infoのチェックをしていませんでしたが、ピリオドや > スラッシュが入っていた場合には、エラーとする様にしないと、セキュリ > ティの穴になり、サーバー上の任意のファイルが読み書き出来る可能 > 性があります。 そうですね。この辺はゆるゆるな感じですね。 ただKinsanも後述するようにプラグインからWikiを作成するので それにあう形でチェックしてやればいいかなと思っています。 if($path_info =~ m{^(/\w+)*/(\w+)$}){ ... } みたいな感じですかね。 最後に'/'がついている場合は今は考えていません。 Wikiのリストを出してやるのが良いと思うのですが、 そこまでは手を付けれていません。 > ユーザーがsetup.plを修正可能とする場合には、同様にsetup.plで定 > 義している変数も全てチェックする様にしないと、危ないです。でも、そ > れらの変数に'..'を1つ含むのが正当な場合もあるので、チェック方法 > にちょっと工夫が要りそうです。 ここちょっとわからなかったんですが、 $path_info =~ s{(\w+)/}{$1.dir/}g; $data_dir .= $path_info; とかした方がいいということでしょうか? > そういう意味では、プラグインから作成する方法なら、チェックすべきは、 > 子Wikiの名前だけになるので安心ですね。 そうですね。日本語使う意味はないですから /^\w+$/くらいでチェックすれば大丈夫ではないかと思っています。 -- ********************************* Kousuke Taniguchi mailto:tinse****@u01***** ********************************