paginationにXSS攻撃の可能性があったのでチケット投げた

CakePHP 1.2で導入されたPagination機能はページング処理が簡単に導入できて最高ですが、今回paginator helperで、ある値がエスケープやurlencodeされていない箇所があり、クロスサイトスクリプティングXSS)の可能性があり、問題だと思ったので本家CakePHPTracにバグチケットを投げてみました(今年の目標の一つにチケットを投げるというのがあったのでこれは達成です)

チケット投げて3日程度で、修正パッチが出ました。
https://trac.cakephp.org/changeset/8061
https://trac.cakephp.org/ticket/6134


日本コミュニティ内でのやりとりは下記にあります。
http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=1779&forum=9


mark_storyさんがリリースしたパッチは、該当箇所の修正に加えて、helper.phpのurl functionも修正していて、このurl functionを使ってURLを生成しているヘルパーの機能は、全てhtmlエスケープされるようになりました。
今まで、paginationを使ってクエリを引き回す記事は下記で書きましたが、追記でurlencodeしなきゃいけないということも書いてきました。
http://d.hatena.ne.jp/cakephper/20080907/1220796088
http://d.hatena.ne.jp/cakephper/20081118/1227005449
今回のパッチをあてると(もしくは将来パッチがあたったソースがリリースされると)、この問題も特に気にしなくてすみます。手動でリンクに値を動的に動的な値を埋め込む場合は、気にしなきゃいけませんけど。


paginationの値を引きついでいく記事でよく見かける(自分の過去の記事も含めて)、viewのファイルで下記のようにする

<?php $paginator->options = array('url' => $this->passedArgs ) ); ?>

という箇所ですが、このまま利用すると、passedArgsの値をrender前に、urlencodeとかエスケープしてない限りはXSSの問題が発生します。この問題も今回のパッチで解決できるので、もしそのまま本番環境で上記のようなコードを使っている人はパッチを当てておく(該当箇所を書き換えるだけ)ことをお勧めします。