colorプラグインの( )内の引数にセミコロンやコロンが記述できてしまうため、任意のCSSのプロパティと値を設定できてしまう。
colorプラグインの( )内の第1引数・第2引数の値にセミコロンやコロンを含む値が入ることはありえないので、修正すべき。コロンはともかく、セミコロンははじかないとまずい。
最近、colorプラグインのこのバグを利用してtext-alignを設定している例(たとえばofficial:自作プラグイン/navi2.inc.phpやofficial:質問箱/216など)を散見するが、colorプラグインで出力されるタグはインライン要素の<span>~</span>であるため、不整合を引き起こしている(CSSのtext-alignプロパティはブロック要素にしか指定できない)。
function plugin_color_sanitize($color) { return preg_replace('/[^\w#-]/','',$color); }
<li><span style="color:width100px">左寄せ</span><span style="color:width60text-alignright">右寄せ</span></li> <li><span style="color:width100px">次も左寄せ</span><span style="color:width60text-alignright">またまた右寄せ</span></li>
-- reimy 2003-08-29 (金) 02:44:27
<li>左寄せ右寄せ</li> <li>次も左寄せまたまた右寄せ</li>
function plugin_color_is_valid($color) { - return ($color == '') or preg_match('/^(#[0-9a-f]+|[\w-]+)/i',$color); + return ($color == '') or preg_match('/^(#[0-9a-f]+|[\w-]+)$/i',$color); }