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