以前のバージョンからの移行
この章では、主に Zend_View での過去との互換性のない変更について説明します。
以前のバージョンからの移行の助けになることでしょう。
1.7.5 より前のバージョンからの移行
Zend Framework 開発陣は、1.7.5 より前のバージョンにおいて
Zend_View::render() メソッドにローカルファイル読み込み
(Local File Inclusion: LFI) 脆弱性の問題があることに気づきました。
1.7.5 より前のバージョンでは、このメソッドはデフォルトで
親ディレクトリを指す記法 ("../" や "..\")
を含むビュースクリプトも指定できてしまいます。
フィルタリングをしていないユーザ入力が render()
メソッドに渡されると、LFI 攻撃を受ける可能性が出てきます。
render($_GET['foobar']); // LFI
]]>
Zend_View は、このようなビュースクリプトがリクエストされると
デフォルトで例外を発生させるようになりました。
render() メソッドにおける LFI 保護機能の無効化
多くの開発者から「ユーザの入力ではない
場面で、意図的にこれらの記法を使っていることもある」という指摘を受けたため、
特別なフラグを用意してデフォルトの保護機能を無効化できるようにしました。
無効化する方法は二通りあります。コンストラクタのオプションで
'lfiProtectionOn' キーを指定するか、あるいは
setLfiProtection() メソッドをコールします。
false));
// メソッドコールによる無効化
$view = new Zend_View();
$view->setLfiProtection(false);
]]>