Web应用程序中的访问控制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web应用程序中的访问控制相关的知识,希望对你有一定的参考价值。
我目前正在阅读很多关于可用于保护应用程序或Web应用程序中的资源的访问控制可能性/机制。那里有ACL,RBAC,ABAC和许多其他概念。
假设我已经开发了一个简单的Web服务,它可以在'/ api / article'这样的路由上返回知识库文章。 'controller'连接到数据库并获取所有文章并将它们作为XML或JSON返回。
现在,我想控制哪个用户或组可以访问数据库中的哪篇文章。因此,例如,如果用户'peter'使用他的凭证访问路线'/ api / article',则webservice将仅返回对'peter'可见的文章。
我想使用ACL来控制每个用户/组可以读/写/删除的内容。但我不太明白:
一个人在哪里强制执行访问控制?如果用户访问路径'/ api / articles'并根据访问控制列表检查每条记录(听起来效果不是很好),我是否只获取控制器中的所有记录?或者有一种方法是,对数据库的'SELECT'语句只返回该特定用户实际可以看到的记录吗?
我真的很努力地找到关于该主题的更多信息,并且有很多关于不同的访问控制机制,但没有关于实际执行发生的位置和方式......如果涉及其他操作(如修改),它甚至会变得更复杂,删除等......
这实际上是一个实施问题,每个人都以自己的方式做到这一点。它还取决于数据的性质,特别是您的授权大小(您是否有5个角色和用户是否附加到他们或每个用户是否拥有他可以访问的特定文章集,例如每个用户不同 - 例如)
如果您不想在控制器上进行处理,可以将授权信息存储在数据库中,将用户链接到一组知识库文章或角色的表中(然后将反映在文章中) 。在这种情况下,您的SELECT查询将只传递经过身份验证的用户ID。这要求维护关系是由数据库完成的,这可能并不明显。
或者,您可以将ACL存储在控制器上并从那里构建查询 - 用于特定文章或文章组。
获取所有文章并在控制器上检查它们并不是一个好主意(正如您所提到的),DB的设计也是为了避免此类问题。
以上是关于Web应用程序中的访问控制的主要内容,如果未能解决你的问题,请参考以下文章
网络安全——服务端安全(注入攻击认证与会话管理和访问控制访问控制加密算法与随机数Web框架安全应用层拒绝服务攻击DDOS等)