我正在研究React应用程序。我正在定义用户角色并根据角色的权限级别限制对组件的访问。我正在寻找使用签名的cookie来设置php后端的权限。当我确定应用程序是否应该基于cookie中的数据呈现组件时,如何验证cookie中的角色是否未被用户重新定义而不将cookie发送到后端?
答案 0 :(得分:3)
在我看来,这不是正确的做法。组件应该是可以自由加载的 - 如果某个组件内置了一些未经过身份验证的用户无法看到的内容,那么就没有什么能阻止某人进入源代码并自行发现它。
您必须为前端应用程序采用不同的方法 - 所有组件和UI都是公共的。当组件从服务器获取信息以显示给用户时,服务器仍将执行会话身份验证并使用4xx响应(401将是一个好的起点)并且组件将适当地处理该响应。
答案 1 :(得分:2)
如果修改cookie中的角色将允许用户获得更多权限,那么解决方案就是不检查客户端cookie的有效性。用户还可以修改客户端脚本以规避/跳过cookie的完整性检查,您将遇到与以前相同的问题。
唯一正确的解决方案是,用户不会首先获得这些信息/脚本。因此,您需要在服务器端检查允许向客户端发送哪些信息,仅发送允许用户查看的数据,并在执行之前验证用户在服务器端发送给服务器的所有操作。