[Fswiki-dev] plugin処理部にXSS脆弱性

Back to archive index

Naoki Takezoe ADS28****@nifty*****
2003年 7月 15日 (火) 11:58:53 JST


竹添です。パーサのリニューアルについてです。

皆さんもご存知かと思いますが、パーサの解析は現在、行書式解析→
インライン書式解析という2段階の構成になっています。

で、パーサ内部でパース結果のオブジェクト(HTMLパーサの場合は
HTML文字列ですが)を溜め込んでいくという感じになっています。

ここで問題になるのは現在、プラグインはいわゆるHTML的に「パラ
グラフ」になるものがインラインで書けてしまうということです。
つまり、インライン書式の解析部で検出されたプラグインから行書式
の出力が返される場合があるということです。

これを解決しないと少なくともPDFへの反映がうまくいきません。
案としては以下の2つが考えられます。


1.行書式プラグインとインラインプラグインを区別する
  たとえば以下のような感じで書式自体を変えてしまう

{{{行書式プラグイン}}}
{{インラインプラグイン}}


2.行書式プラグインは強制的にパラグラフとみなす

{{行書式プラグイン}}ここは次の段落


どちらにしてもパーサ側でそのプラグインはインライン形式なのか
行書式形式なのかを判別するためにプラグインに例えば

$obj->is_inline();

などのようなメソッドを用意しておくか、Install.pmでのインス
トール時に明示するなどする必要があります。

また、生成部分ですが、実装方法としては大きく分けて以下の2つが
考えられると思います。

1.パーサで全て溜め込んでから一気に生成
2.パーサから逐次生成器のメソッドを呼ぶ

プラグインから生成器を叩くのであれば、2の方法になりますし、
パース結果オブジェクトを返却するような仕様であれば1になります。
今のところシンプルさやパフォーマンスを考えると2のほうがいい
かなと思います。

Wiki形式のテキストを返すプラグインの場合は、パーサのインスタン
スを別に生成して処理するというような感じになるでしょうか。

これはあくまでいまのところぼんやりと考えていることですが、
パーサの改造は3.5で行おうと思っていますので、ツッコミお願い
します。

> 好みはさておき、PDF対応、他のwikiフォーマット対応やサニタイジングを考えると、
> そろそろパーサの設計を見直す時期かもしれません。
> 
> 以下思い付いたところで、
> ・今のパーサを、構文解析・分離分割を行う本当の意味でパース主体の部分と、
>  htmlやPDF生成の部分に分る。
> ・プラグインは両者の間に入るドライバ的存在で、生成側のインターフェースを使ったり、
>  パース側にもう一度わたしたりして出力を構成する。
> てな所ですが、大手術になりそう...

----
Naoki Takezoe <ADS28****@nifty*****>



Fswiki-dev メーリングリストの案内
Back to archive index