Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在前端验证签名的cookie是否有效?_Javascript_Reactjs_Cookies - Fatal编程技术网

Javascript 如何在前端验证签名的cookie是否有效?

Javascript 如何在前端验证签名的cookie是否有效?,javascript,reactjs,cookies,Javascript,Reactjs,Cookies,我正在开发一个React应用程序。我正在定义用户角色,并根据角色的权限级别限制对组件的访问。我正在寻找使用签名cookies从php后端设置权限。当我确定应用程序是否应该基于cookie中的数据呈现组件时,我如何验证cookie中的角色没有被用户重新定义,而不将cookie发送到后端 在我看来,这不是正确的方法。组件应该可以自由加载-如果组件内置了未经身份验证的用户不应该看到的东西,那么没有什么可以阻止某人进入源代码并自己发现它 对于前端应用程序,您必须采取不同的方法-所有组件和UI都是公共的。

我正在开发一个React应用程序。我正在定义用户角色,并根据角色的权限级别限制对组件的访问。我正在寻找使用签名cookies从php后端设置权限。当我确定应用程序是否应该基于cookie中的数据呈现组件时,我如何验证cookie中的角色没有被用户重新定义,而不将cookie发送到后端

在我看来,这不是正确的方法。组件应该可以自由加载-如果组件内置了未经身份验证的用户不应该看到的东西,那么没有什么可以阻止某人进入源代码并自己发现它


对于前端应用程序,您必须采取不同的方法-所有组件和UI都是公共的。当组件从服务器获取信息以显示给用户时,服务器仍将执行会话身份验证并使用4xx 401进行响应,这是一个很好的开始,组件将适当地处理该响应

在我看来,这不是正确的方法。组件应该可以自由加载-如果组件内置了未经身份验证的用户不应该看到的东西,那么没有什么可以阻止某人进入源代码并自己发现它


对于前端应用程序,您必须采取不同的方法-所有组件和UI都是公共的。当组件从服务器获取信息以显示给用户时,服务器仍将执行会话身份验证并使用4xx 401进行响应,这是一个很好的开始,组件将适当地处理该响应

如果修改cookie中的角色将允许用户获得更多权限,那么解决方案是不在客户端检查cookie的有效性。用户还可以修改客户端脚本以规避/跳过cookie的完整性检查,您将遇到与以前相同的问题


唯一正确的解决方案是,用户首先不会获得这些信息/脚本。因此,您需要在服务器端检查允许向客户端发送哪些信息,只发送允许用户查看的数据,并在执行之前在服务器端验证用户发送给服务器的所有操作。

如果修改cookie中的角色将允许用户获得更多权限,然后,解决方案是不在客户端检查cookie的有效性。用户还可以修改客户端脚本以规避/跳过cookie的完整性检查,您将遇到与以前相同的问题


唯一正确的解决方案是,用户首先不会获得这些信息/脚本。因此,您需要在服务器端检查哪些信息可以发送到客户端,只发送用户可以看到的数据,并在执行之前在服务器端验证用户发送到服务器的所有操作。

我不认为不呈现组件是正确的想法-我认为组件应该可以自由加载,但该组件中的内容(将从服务器获取)不会加载,因为服务器无法验证您的cookie。@TylereBastian:我建议您在回答中添加您的评论,因为这是正确的方法。我不认为不呈现该组件是正确的想法-我认为该组件应该可以自由加载,但是该组件中的内容(将从服务器获取)不会加载,因为服务器无法验证您的cookie。@TylereBastian:我建议您在回答中添加您的评论,因为这是正确的方法。