Syndicate this site ATOM (XML) Syndicate this site RSS 2.0 (XML)

« Movabletype 2.6 Comming | Blog's TOP | at 甘粛省蘭州 on 19/Jul/1999 »

Sanitize Plugin

Category : [Movable Type]
Posted by snotch at February 8, 2003 5:04 PM

MT Version2.6からMT本体に組み込まれる予定の、Brad Choateさん作の Sanitize Plugin。セキュリティ面を考慮すると、PHPスクリプトをテンプレート中に記述している際に前々から気になっていたところです。このプラグインのおかげで、その点を解決できます。phpが使用可能な環境でMTを動かしている場合、このプラグインを入れずにHTMLコメントを許可している状態というのは非常に危険ですね。

~ 以下訳 ~

Movable Typeには、厄介なセキュリティ問題が存在する。実際には、それはMovable Typeの落ち度ではない。PHP,ASP,JSP,SSIなどのスクリプトを、ページ内処理を行うのに用いていて、コメント内のHTMLタグを許可している場合に問題が起こりうる。例えば-- 誰かがこんな風にコメント欄に打ち込んだらどうなるだろうか?(HTMLタグコメントが許可されているblogにおいて):

<?php readfile("/etc/passwd") ?>

あなた利用しているのサーバーの /etc/passwd ファイルの内容が画面に表示されるだろう。さらには、Movable Typeから読むことができる他のファイル --mt-db-pass.cgi(コンテンツをMySQLに格納している場合に、MySQLのパスワードが格納されている) など-- も読めてしまうかもしれない。

手っ取り早い解決方法としては、HTMLコメントを禁止することだ。しかし、HTMLコメントの受付を継続し、かつ、コメントから危険なタグを取り除きたいのであれば、Sanitize plugin が問題解決に役立つ。以下、使い方を記す。

<MTCommentBody sanitize_html="a href,b,br,p,strong,em,ul,li">

‘sanitize_html’ 属性としてリストされているタグだけが使用される。リストされていないタグは削除される。 さらに、悪意を持った攻撃を防ぐために、 JSP, ASP, PHP, SSI などのマークアップは自動的に削除される。 属性は明確に指定しなければならない。属性を指定するには、タグネームの後ろにスペースを挿入し、許可する属性名をそれぞれスペースで区切りながら続ける。許可されたすべてのタグに対して属性を許可したいときには、'*'をタグネームとして追加し、属性のリストをそれに続ければよい。

Sanitize plugin のもうひとつの特徴として、HTMLのタグをスキャンすると同時に、どのタグが開いているかあるいは、閉じられているかを追随する。データの末尾までに、もし閉じられていないタグがあった場合、終了タグが追加される。HTMLコメントを許可している場合、開きっぱなしのタグを含むテキストが投稿されることは通常よくあることだ。---ボールドタグを投稿者が閉じ忘れると、その後に続くすべてのコメントがboldになってしまう。こんなときでも、Sanitizeが自動的にボールドタグの終了タグを追加してくれる。

もし、このプラグインに関して、質問、クレーム、問題があれば、>> ここ にコメントとして投稿してほしい。

~訳 ここまで~