colorプラグインの引数にセミコロン・コロンが記述できてしまう

  • ページ: BugTrack
  • 投稿者: reimy
  • 優先順位: 重要
  • 状態: 完了
  • カテゴリー: プラグイン
  • 投稿日: 2003-08-28 (木) 01:13:07
  • バージョン:

メッセージ

colorプラグインの( )内の引数にセミコロンやコロンが記述できてしまうため、任意のCSSのプロパティと値を設定できてしまう。

colorプラグインの( )内の第1引数・第2引数の値にセミコロンやコロンを含む値が入ることはありえないので、修正すべき。コロンはともかく、セミコロンははじかないとまずい。

最近、colorプラグインのこのバグを利用してtext-alignを設定している例(たとえばofficial:自作プラグイン/navi2.inc.phpofficial:質問箱/216など)を散見するが、colorプラグインで出力されるタグはインライン要素の<span>~</span>であるため、不整合を引き起こしている(CSSのtext-alignプロパティはブロック要素にしか指定できない)。


  • style injectionとでも言いましょうか。サニタイズの必要がありますね。 -- ぱんだ 2003-08-28 (木) 09:34:40
  • htmlspecialchars()の代わりの関数を考えてみました。使えない文字を除去します。 -- ぱんだ 2003-08-28 (木) 10:15:56
    function plugin_color_sanitize($color)
    {
      return preg_replace('/[^\w#-]/','',$color);
    }
  • うまくいきました。きれいに除去できてます。&ref(): File not found: "color.inc.php" at page "BugTrack/452";
    <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

  • 使えない文字が含まれている場合は<span>で囲まず、$bodyだけを返してしまうほうがいいかも。下記のように。PukiWiki-officialで実装してみました。 -- reimy 2003-08-29 (金) 03:00:03
    <li>左寄せ右寄せ</li>
    <li>次も左寄せまたまた右寄せ</li>
  • 無効な文字を含む色名は、無効な文字を取り除いた後も無効である可能性が高い、と考えると、そのほうがいいかもしれません。そっちの線で行きますか。 -- ぱんだ 2003-09-03 (水) 10:09:55
  • cvsに投入しました。 cvs:plugin/color.inc.php(v1.4:r1.6r1.7) -- ぱんだ 2003-09-03 (水) 10:32:30
    • これ、↓じゃないと意味ない気がします。 -- masao 2003-09-04 (木) 17:00:07
       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);
       }

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-11-16 (水) 04:27:44
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.737 sec.

OSDN