Zend_Acl Белый список против черного списка? - PullRequest
1 голос
/ 25 сентября 2010

Должен ли я использовать белый или черный список подходов к Zend_Acl? Под этим я подразумеваю запретить любые и все ресурсы для всех и записывать каждый отдельный случай разрешения для каждой роли [черный список] или разрешать все ресурсы и записывать каждый отказ в обслуживании для каждой роли [белый список]

Ответы [ 4 ]

5 голосов
/ 27 сентября 2010

не нужно указывать каждую запрещенную роль.

сначала вы должны определить всю роль как отказанную. после этого установите допустимый ресурс доступа для каждой роли. поэтому любая роль, которую вы не объявили разрешенной для ресурса, будет автоматически отклонена.

как то так:

$acl = new Zend_Acl();
$acl->deny();
$acl->addResource($resource);
$acl->addRole($role);
$acl->allow($role, $resource, $access);
3 голосов
/ 12 октября 2010

Я использую подход белого списка.Это означает, что я имею denyAll в качестве политики запуска и предоставляю доступ к ресурсам только после проверки разрешений для данной роли.Я думаю, это более безопасная практика.В тех же случаях вы можете выбрать один из других в зависимости от того, какова большая часть ваших ресурсов.Например, если большая часть вашего сайта общедоступна, начните с allowAll и просто запретите доступ к ресурсам x.Это может ограничить рост вашего дерева ACL.

1 голос
/ 27 сентября 2010

Если ничего не мешает вам сделать обратное, вы всегда должны делать все, что требует меньших усилий для реализации.

0 голосов
/ 27 сентября 2010

Поскольку вы даже не упоминаете, чего именно хотите достичь, никто не может дать хороший ответ.Наиболее подходящее решение будет зависеть от вашего конкретного случая использования, поэтому либо предоставьте больше информации, либо решите для себя, какое решение лучше.

...