トップ(最新)

nDiki

2005年9月13日 (火)

[ WiKicker ] hell mode - HTMLタグ付けブロックの導入 このエントリーを含むはてなブックマーク

WiKicker では、直接 WikiPageHTMLタグを記述して表示に反映させる機能を提供していない。

@ HTMLタグ付けを許すのは嫌だ

HTMLタグ付けを許すと

  • 入力ミスによるトラブル
  • 悪意ある入力によるトラブル

が起きやすくなるし、ページのソースの単純さが大きく失われてしまう。 レンダリングしてHTMLにした時に、正しいHTMLを出力されることを保証することが困難になるとともに、HTML以外へのレンダリング/コンバートもかなり難しくなる。

この機能を導入すると、Wiki の良さの半分(あるいはもうちょっと沢山か、もうちょっと少なめ)が失われてしまう。

@ でも

とはいえ欲しいという声があることも事実。 オープンな WikiForum では全くお勧めできないが、閉じたユーザグループの中ではまぁ必要悪なのかもしれぬ。

また正直ちょっとした表現を追加したい時に、WiKicker 用のプラグインを書くのも面倒だというのは確かにある。

WiKicker では開始・終了マーカによる複数行にまたがるブロックを表すための文法は(閉じ忘れを避けるため)意図的に排除してある。 このため、複数行にわけて書きたいような長いデータを扱うような拡張も導入しにくい。

ちょっと手抜きして「生HTML書けちゃえば」という誘惑はなくはない。

@ 大人の事情

ということでまあ自分に言い訳をしつつ、標準ではオフというかたちで HTMLタグ付けブロックを導入することにした。 スイッチは hell mode とかにしたい (今回は syntax.html というプロパティ名にしたけれど)。

記法は単純に、

 normal wiki syntax text...
 <html>
 html tagged text...
 ...
 </html>
 normal wiki syntax text...

のように行頭が <html> である行から、行頭が </html>である行までをHTMLタグ付けブロックとすることに。 このため、<html>ではじまる段落が書けなくなるという小さな非互換が発生するが、いたしかたない。

@ サニタイズ

HTMLタグを直接使えるようにするとはいえ、全てを許してしまうのはあまりに危険で非人道的すぎる。 有効なHTMLタグや属性は限定的であるべきだ。

このあたりの処理は面倒だが、幸いにしてCPANにモジュールがある。 今回は HTML::Scrubber を使うことにした。 HTML::Parserを使って parse し、指定したルールに従ってサニタイズしてくれる。

ちょっと使ってみた範囲では日本語(UTF-8UTF8 フラグなし)でも問題ないようだし、文法的に正しくなくてもきちんとサニタイズできているようだ。

ということで、これを採用することに。

どの要素・属性を許すかはまだきちんと決めかねる。 当面は様子をみながら、調整していく予定。 サニタイザは設置者が置き換えられるようにプラガブルにしておかねばならないな。

スポンサード リンク


[ 9月13日全て ]

Related term

■よく検索されるキーワード

torrent(84) windows(45) 書き方(43) 提案書(41) perl(39) linux(35) x31(27) 動画(25) 画像(25) usb(25) アジェンダ(25) thinkpad(22) 設定(22) cvs(20) 使い方(20) debian(19) ドラマ(18) 壁紙(18) 影舞(16) svn(15) subversion(15) アジェンダとは(15) tc-1(15) ganttproject(15) ダイソー(14) mp980(13) cwrsync(13) 写真(13) java(13) rcs(12) サンプル(12) ノート(11) インストール(11) 手帳(11) ヨドバシカメラ(11) make(11) gtd(11) ボールペン(10) 方眼(10) ssh(10) thinkingrock(10) ヨドバシ(10) 修理(10) firefox(9) バックアップ(9) 秋葉原(9) apache(9) リフィル(9) wiki(9) tortoisesvn(9) フォーマット(9) emacs(8) 無印良品(8) ubuntu(8) log4perl(8) 無料動画(8) ヒカル小町(8) minolta(8) ガントチャート(7) 変換(7) naney org wiki(7) ecj-jk10(7) 日本語(7) a6(7) flex(7) truecrypt(7) フィルムスキャン(7) システム手帳(7) djunit(6) skype(6) ibm(6) c#(6) 作成(6) gmail(6) ダウンロード(6) イグアナの娘(6) 差分(6) 提案書の書き方(6) 生年月日(6) 2009(6)

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 0.20584s / load averages: 0.34, 0.34, 0.27
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)