2010-09-24 111 views
1

我应该使用白名单还是黑名单方法来处理Zend_Acl?因此,我的意思是拒绝任何和所有资源给每个人,并为每个角色[黑名单]写入每个单个允许情况,或者允许所有资源并为每个角色编写每个拒绝护理[白名单]Zend_Acl白名单VS黑名单?

回答

5

不需要指定每个拒绝角色。

起初你应该把所有角色定义为拒绝。之后,为每个角色设置允许的访问资源。因此您没有声明为允许资源的每个角色都将被自动拒绝。

是这样的:

$acl = new Zend_Acl(); 
$acl->deny(); 
$acl->addResource($resource); 
$acl->addRole($role); 
$acl->allow($role, $resource, $access); 
0

既然你甚至没有提到它究竟是什么,你想要实现的,没有办法,任何人都可以给出很好的答案。最合适的解决方案将取决于您的具体使用情况,因此要么提供更多信息,要么为您自己决定最佳解决方案。

+0

请再读一遍。我说了所有需要的。 – BRampersad 2010-09-28 19:19:18

+0

不,你不会说你要用它做什么,所以我们不能决定是否其中一个会更有意义。但无论如何:我倾向于选择白名单(在默认情况下拒绝所有内容,并且允许基于每个角色/资源),因为默认情况下它不会公开新功能(所以用户只有在更新后才能访问新功能相应的ACL)。 – wimvds 2010-09-29 07:37:00

+2

+1这个问题并没有解释*你想要做什么,它只解释*你想怎么做。白名单与黑名单是一个主观问题。这取决于你的目标是什么。 – 2011-12-30 03:52:54

1

除非任何事情都在困扰着你做相反的事情,你应该总是做任何需要更少的努力来实现。

3

我正在使用白名单方法。这意味着我只有在检查给定角色的权限后,才拥有denyAll作为启动策略和对资源的授予访问权限。我认为这是一个更安全的做法。在相同的情况下,您可以根据您的大部分资源情况选择一个。例如,如果您的大部分网站都是公开的,则从allowAll开始,并拒绝访问x资源。这可能会限制ACL树的增长。

+0

是的,我决定和这一起去,因为它更安全。 – BRampersad 2010-10-12 18:39:15