[Fswiki-dev] 3.4.2への無限ループ対策について

Back to archive index

WATANABE Akitsugu aki****@de*****
2003年 8月 12日 (火) 23:35:11 JST


渡邊です。

From: Naoki Takezoe <ADS28****@nifty*****>
Subject: [Fswiki-dev] 3.4.2への無限ループ対策について
> 竹添です。
> 
> Naoki Takezoe <ADS28****@nifty*****> wrote:
> 
> 上記の件ですが、よくよく考えてみるとincludeとtodolistだけ
> 対処すればBBS2やカレンダ系についてはprocess_wikiメソッドの中で
> 処理されるので無限ループにはならないような気がするのですが
> 
> ・・・勘違いしてますでしょうか?

まず、3.4.2系列では bbs2やcalendar系が{{include }}を呼び出しません。
これらは直接 process_wiki を叩いているので、

Wiki::process_wiki 
	-> Parser::parse 
		-> HTMLParser::l_plugin 
		-> Wiki::process_inline 
		-> plugin::.*::inline -> ふりだしに戻る

という無限ループパスを生成し、ダメになると思います。

# 実験内容:
# 
# 適当なカレンダーに今日の日付のエントリを作成する。
# エントリに {{recentcalendar 今使っているカレンダ名}} と書く
# ・・・
# (ダウン)

iswebで実験してみましたが、きっちり500で落ちました(涙)。


安全を考えると、Wiki::process_wiki の側でも無限ループを阻止する仕掛けを
用意した方が良いように思います。

シンプルな方法ですが、
Wiki::process_wikiあたりの呼び出し回数を制限するというのは
いかがでしょうか?

この方法で回避できないパターンはいくらでもありますが、
同一コンテンツの多重読込によるダウンだけは避けられます。

# 悪意あるプラグインから守る方法は・・・ALRMシグナルでしょうか
--
WATANABE, Akitsugu (aki****@de*****)



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