Programmer's Reference Guide

Zend_View_Abstract

以前のバージョンからの移行

この章では、主に Zend_View での過去との互換性のない変更について説明します。 以前のバージョンからの移行の助けになることでしょう。

1.7.5 より前のバージョンからの移行

Zend Framework 開発陣は、1.7.5 より前のバージョンにおいて Zend_View::render() メソッドにローカルファイル読み込み (Local File Inclusion: LFI) 脆弱性の問題があることに気づきました。 1.7.5 より前のバージョンでは、このメソッドはデフォルトで 親ディレクトリを指す記法 ("../" や "..\") を含むビュースクリプトも指定できてしまいます。 フィルタリングをしていないユーザ入力が render() メソッドに渡されると、LFI 攻撃を受ける可能性が出てきます。

  1. // $_GET['foobar'] = '../../../../etc/passwd' だったら……
  2. echo $view->render($_GET['foobar']); // LFI

Zend_View は、このようなビュースクリプトがリクエストされると デフォルトで例外を発生させるようになりました。

render() メソッドにおける LFI 保護機能の無効化

多くの開発者から「ユーザの入力ではない 場面で、意図的にこれらの記法を使っていることもある」という指摘を受けたため、 特別なフラグを用意してデフォルトの保護機能を無効化できるようにしました。 無効化する方法は二通りあります。コンストラクタのオプションで 'lfiProtectionOn' キーを指定するか、あるいは setLfiProtection() メソッドをコールします。

  1. // コンストラクタでの無効化
  2. $view = new Zend_View(array('lfiProtectionOn' => false));
  3.  
  4. // メソッドコールによる無効化
  5. $view = new Zend_View();
  6. $view->setLfiProtection(false);

Zend_View_Abstract
blog comments powered by Disqus

Select a Version

Languages Available

Components

Search the Manual