我在我的项目中使用 Symfony2 及其 ACL 安全组件。我想在前端框架中使用 ACL 信息来显示/隐藏元素。
将当前用户的格式化 ACL 信息附加到当前对象上是否是一个糟糕的想法?
假设用户有权查看和编辑对象,因此 JSON 数据如下所示:
{
"id": 1,
"name": "Product",
"_permissions": ["VIEW", "EDIT"]
}
此解决方案可能会导致哪些安全漏洞?
我在我的项目中使用 Symfony2 及其 ACL 安全组件。我想在前端框架中使用 ACL 信息来显示/隐藏元素。
将当前用户的格式化 ACL 信息附加到当前对象上是否是一个糟糕的想法?
假设用户有权查看和编辑对象,因此 JSON 数据如下所示:
{
"id": 1,
"name": "Product",
"_permissions": ["VIEW", "EDIT"]
}
此解决方案可能会导致哪些安全漏洞?
我不认为存在安全问题。您将同意在您的数据中包含对象的 id 和类型不是问题:-)。所以我们唯一应该看的是VIEW
andEDIT
属性。这些值不是秘密。它们是 Symfony 文档的一部分。因此,如果您对该对象具有这些权限,则仅与信息有关。
如果您将其JSON
与您的数据一起返回,我认为该属性实际上不是其他信息,因为如果您没有权限VIEW
,它将不会被返回。VIEW
因此,您在此处提供的唯一信息是用户是否可以编辑该对象。
如果您考虑一下,您将同意如果您在服务器端根据权限决定是否将该对象的编辑链接添加到 html 页面,您将提供相同的信息。
因此,如果您isGranted("EDIT", $product)
决定是否将该 EDIT 作为 JSON 的一部分返回,我将看不到任何安全漏洞。