FuelPHP 1.5.3 hotfix がリリースされました
FuelPHP 1.5 から 1.5.2 では、デフォルトの出力フィルタおよび URI フィルタが空になってしまっていた問題を修正するためのリリースです。
1.5 から 1.5.2 を新規インストールした場合、1.4 以前と同様のセキュリティ設定にしたい場合は、app/config/config.php に以下を追記する必要があります。
'security' => array( 'uri_filter' => array('htmlentities'), 'output_filter' => array('Security::htmlentities'), ),
出力フィルタを設定していない場合(つまり 1.5〜1.5.2 のデフォルト状態)は、テンプレートエンジンなどで出力時にエスケープ処理をしているケースを除き、外部からの入力データをビューで表示すれば XSS が可能になり大変危険です。
なお、1.3 以前の app/config/config.php をそのまま使っている場合は、すでにフィルタが記載されているため、影響はありません。
経緯
security.output_filterが空になっとるよオオおおおおおおおおおおおおおおおおおおおおおお 1.5からだあああああああああああ #FuelPHP
— Shintaro Ikezakiさん (@hackoh) 2013年3月5日
これは、1.4 でデフォルトの設定が core/config/config.php に移動し、app/config/config.php が空になったことに起因しています。
core/config/config.php に記載されたフィルタと app/config/config.php に記載したフィルタは、配列の要素がマージされるため、すべて登録されました。このため、core にデフォルトのフィルタが定義されていると app での設定でフィルタを空にすることができず、また、core と app の両方に記載されたすべてのフィルタが実行されるという問題がありました。そのような問題を回避するため、core のフィルタが空に変更されました。
実装とドキュメントが異なっているため、ドキュメントの修正が PR されました。
しかし、ポリシー変更ではないということで、問題が修正されることになりました。
1.6/develop では、セキュリティフィルタは app/config でのみ設定するように修正され、デフォルトも以前と同じように戻されました。
- moved security settings back to app. related fuel/docs#526 · fuel/fuel@3849b89 · GitHub
- moved security settings back to app; added filter on duplicate securi… · fuel/core@3ba5049 · GitHub
この修正が 1.5 に backport され、hotfix がリリースされました。