RBAC(Role Based Access Control)のBizRulesのアイデアは気分が悪くなります。これは、基本的に、承認中にデータに対して実行するスクリプトを定義する方法です。例えばRBACのBizRules(ビジネスルール)は本当に安全ですか?
、Yiiのフレームワークは、それをサポートしています。http://www.yiiframework.com/doc/api/1.1/CAuthManager#createRole-detail
public CAuthItem createRole(string $name, string $description='', string $bizRule=NULL, mixed $data=NULL)
ここでは、ビジネスルール実行するためのソースコードです:
:だから/**
* Executes the specified business rule.
* @param string $bizRule the business rule to be executed.
* @param array $params parameters passed to {@link IAuthManager::checkAccess}.
* @param mixed $data additional data associated with the authorization item or assignment.
* @return boolean whether the business rule returns true.
* If the business rule is empty, it will still return true.
*/
public function executeBizRule($bizRule,$params,$data)
{
return $bizRule==='' || $bizRule===null || ($this->showErrors ? eval($bizRule)!=0 : @eval($bizRule)!=0);
}
は、あなたのようなことを行うことができます
// Assume this bizRule: $bizRule='return Yii::app()->user->id==$params["post"]->authID;';
Yii::app()->user->checkAccess('createUser', array('post' => $post));
基本的には、コンテキスト内の指定された配列に$ paramsを設定したルール。
セキュリティ上のビジネスルールが嫌いです。それを行う良い方法はありますか?
を使用することができると思い、誰かを助けますか? – AviD
実際にこの[少し関連する質問](http://security.stackexchange.com/q/346/33)をチェックしてください。 – AviD