Zend_Aclコンポーネントを更新すると、アプリケーションの機能が壊れます

バージョン1.10.6からバージョン1.11にアップグレードしたばかりで、管理者アカウントがほとんどの機能へのアクセスを失ったという悲しい事実を発見しました。



adminロールの特権を設定した後、いくつかのリソースを追加しました。



$acl->add(new Zend_Acl_Resource('resource1'));

$acl->allow('admin');

$acl->add(new Zend_Acl_Resource('resource2'));









diffを介してZend / Acl.phpファイルの2つのバージョンを実行した後に判明したため、ファイルの636行目が変更されました。



それは:

$resources = array($resources);







次のようになりました:

$resources = ($resources == null && count($this->_resources) > 0) ? array_keys($this->_resources) : array($resources);







明らかに、allowメソッドを呼び出すときにリソースを指定しない場合、ロールの特権は登録済みのリソースにのみ設定されますが、以前の呼び出しではすべてのリソースにアクセスする特権が追加されていました。 ここで、通常の操作では、ACLにリソースを最初に追加する前に許可を設定する必要があります。



これは、誤った修正であり、新しいフレームワークセキュリティポリシーではないことを願っています。



判明したように、このようにして彼らはZF-9643を排除しようとし、それによってZF-10649を追加しました。



All Articles