Security 访问控制列表最佳实践-ACL-为攻击站点的用户设置负面角色 上下文
我刚刚读了关于Zend ACL的文章 问题: 我在一台服务器上运行三个Zend应用程序Security 访问控制列表最佳实践-ACL-为攻击站点的用户设置负面角色 上下文,security,acl,zend-acl,Security,Acl,Zend Acl,我刚刚读了关于Zend ACL的文章 问题: 我在一台服务器上运行三个Zend应用程序 我的前端应用程序 我的前端成员应用程序 我的后端应用程序(网站所有者的管理员) 在应用程序中,我考虑使用两种类型的ACL 应用程序范围的ACL—“应用程序ACL的”权限只是“访问”(或者称之为“读取”)(或者甚至是“发送HttpRequests”)) 帐户范围-将所有其他权限留给个人“帐户ACL” 我认为这将使阻止垃圾邮件发送者和其他攻击者变得更容易 if (UserActivityScoresHi
- 我的前端应用程序
- 我的前端成员应用程序
- 我的后端应用程序(网站所有者的管理员)
- 应用程序范围的ACL—“应用程序ACL的”权限只是“访问”(或者称之为“读取”)(或者甚至是“发送HttpRequests”))
- 帐户范围-将所有其他权限留给个人“帐户ACL”
if (UserActivityScoresHighProbabilityOfHacking_Specification->IsSatisfiedBy(User))
{
User->addrole(Attacker)
}
也许有这样的规则:
我的前端应用程序访问控制
- Name=攻击者
- 唯一权限=无
- 从继承权限=不适用
- 姓名=客人
- 唯一权限=SendHTTPRequests
- 从继承权限=不适用
- 姓名=成员
- 唯一权限=SendHTTPRequests
- 从=来宾继承权限
- 姓名=管理员
- 唯一权限=(所有权限)
- 从继承权限=不适用
因此,要回答的问题是: 将“攻击者”(负面角色)角色分配给用户是否让您觉得是明智之举
或者这与一般的最佳实践相反?用户共享一个公共IP地址并不少见,所以我不确定通过IP禁止用户有多实际
如果是填写表单类型的东西,最好用验证码来阻止垃圾邮件发送者。我看到的基于用户所做/拥有的分配角色的问题是,它在代码中硬编码规则。示例中的隐式规则是:
deny user access when user has property/behavior X
了解这一点的一种方法是,问问自己,如果你想调整它,会发生什么。假设您发现可疑行为有点过于严格,并且希望容忍更多,那么您必须进入file.php并对其进行更改
我认为最好的办法是研究规则的断言部分:
根据您的具体需求,这些可能是一个很好的解决方案
编辑:回复评论->
我理解你的观点。我认为这说明了为什么RBAC将被更强大的访问控制(如基于属性的访问控制)所取代。这将允许基于规则的用户和受控制对象/资源的属性。
理想情况下,您希望访问控制中包含尽可能多的权限决策逻辑。当您将角色隐式地分配给用户时,一些决策将超出访问控制范围(例如,哪个用户将成为管理员主要取决于网站所有者等因素)。但是您希望尽量减少acl之外的决策,因为它添加了一个不受acl控制的访问层。因此,决定谁将担任特定角色通常是隐含的,并且不在acl范围内。但仍然是访问控制的核心,由一些逻辑决定,最好在程序中保留尽可能多的逻辑,以负责处理这个域。
希望这段漫无边际的话有意义:-)经过几天的思考……以下是我对上述问题的回答: 将“攻击者”(负面角色)角色分配给用户是否让您觉得是明智之举 我的答覆是: 不,这是一件非常愚蠢的事。 为什么? 除了koen和Robert Harvey提出的问题 ACL允许角色被继承,因此如果两个角色适用于一种情况,则具有积极和消极角色将导致更大的复杂性和冲突 我的意思是“积极”,意思是:
- “只有当某人担任此角色时,才允许他做某事”
- “只有当某人不担任此角色时,才允许他做某事”
角色1:友好用户+
角色2:来宾+
角色3:成员+
角色4:管理员+
角色1:黑客-
角色2:来宾+
角色3:成员+
角色4:管理员+
第二个角色列表更加混乱。使用ACL基本上有两种理念:
第二个更好,当你有小面积的保护和大部分公共区域。对每个呼叫进行检查会增加应用程序的重量。是。我知道你的IP地址是一个很糟糕的例子。我将根据已更改的条件规范将问题从:isInBlockedIpList(UserIP)更改为UserActivityScoreHighPoabilityOfHacking_规范您是否通过其帐户识别用户?如果你阻止他,他能创建一个新帐户吗?在这个例子中,“用户”是用在最宽松的意义上的。可能仅通过IP+缺少会话id+使用签名等其他因素来识别。我真的很想知道,如果指派一个像“垃圾邮件发送者”或“黑客”这样的角色给