指定したタブのみ許可する方法
要するに、このはてなダイアリーも、
<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でダウンロード可能。
結構簡単に使えることがわかったので、これを導入しよう。
最初に仕様をはっきりとしておかないと、後で、えらい目にあう。
一からブログシステムを作り始めて、ついにここまで来たか。
と、感無量である。
ここは一番ブログシステムの核となるところなので、きっちり考えていこう。
徒然なるままに仕様を書いていこう。後に次々足していこう
形式 | XML。CSVもサポートしたい。時期バージョンで、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個だから、どうしようか・・。 |