指定したタブのみ許可する方法

要するに、このはてなダイアリーも、
<b>aaa</b>
と入力すれば、
aaa
となったり、
<font color = "red">赤だよー</font>
と入力すれば、
赤だよー
と表示される。

こんなことを、今実装しているブログのシステムに付け加えたい。
かなり、文字列をチェックしていけば、作れるだろうけど、なんとかいい方法は、
ないものか・・・・。

で、調べてみた。

http://ns1.php.gr.jp/pipermail/php-users/2003-October/018742.html
http://sourceforge.net/projects/kses/

kses is an HTML/XHTML filter written in PHP. It removes all unwanted HTML elements and attributes, and it also does several checks on attribute values. kses can be used to avoid Cross-Site Scripting (XSS), Buffer Overflows and Denial of Service attacks.

訳。

ksesは、PHP言語で記述された、HTML/XHTMLフィルタです。ksesは、望ましくないHTMLの要素と、その属性を除去します。また、属性の内容をチェックすることができます。
ksesは、クロスサイトスクリプティング対策に使うことが可能です。
また、バッファオーバフロー攻撃と、Denial of Service(←何これ?)攻撃対策にもなります。

sourcefogeより、ksesというPHPのライブラリがGPLでダウンロード可能。
結構簡単に使えることがわかったので、これを導入しよう。



最初に仕様をはっきりとしておかないと、後で、えらい目にあう。
一からブログシステムを作り始めて、ついにここまで来たか。
と、感無量である。

ここは一番ブログシステムの核となるところなので、きっちり考えていこう。

徒然なるままに仕様を書いていこう。後に次々足していこう

形式 XMLCSVもサポートしたい。時期バージョンで、Moovable Type変換機能も実装したい。PHP4対応 simpleXMLは使用不可
漢字コード 入力 UTF-8 出力 Shift-JISにする OSに依存しないように、実装する mb_stringを使うことに躊躇しない
主キー 記事番号に対応させる。日にちで分けない。
記事 いち更新したのか、それぞれの記事に表示させる
画像 画像は一つに記事に対して3枚までアップロードできることとする。
画像の枚数によって、スタイルシートを変更し、画像をGDライブラリで縮小させることとする。GDライブラリによる画像圧縮は、最大横幅が640 or 320までとする。それぞれの画像に対して、a hrefリンクを target属性なしで、張ること。
XMLで必要な属性 下に記述する
許可するHTMLタグ javascriptは例外なく対応しない。ただし、Google MAP APIは、実装できるように、対応する。他のHTMLタグは、allow,deny方式ではなく、deny,allow方式で対応する。現在のところ、<b><a href target><i><u>までは対応している。<div>のスタイルシートだけは対応させてもよいことにしようかしまいか、悩み中。
画像DB 画像自体は、DBフォルダに、記事番号ごとに、画像を保存するようにすると、XMLに、リンク先を入力しなくてよいので、そのようにしたい。しかしそうすると、一つのディレクトリの中の最大ファイル数は、65535個だから、どうしようか・・。