我正在ReactJS中做一个100%的网站,这是一个简单/中等复杂的网站,它有登录、配置文件和其他部分。在用户登录到网站后,登录回调返回一些重要值,如:;令牌,用户角色";。目前,我正在使用localStorage将这些值存储在Web客户端中。
我的疑问是:有更好的方法来存储这些值吗?因为如果任何人更改浏览器控制台中的值,这可能是一个大问题,因为他们可以更改角色,然后执行他们不应该做的事情。
我想用Redux做这件事,但如果用户刷新网站,他们就会失去价值,所以我不太确定会选择这个。
你们觉得怎么样?
TIA!
一般规则是永远不要信任客户端存储的任何数据,除非是身份验证令牌或等效的数据。用户所做的所有涉及服务器的更改都应该在服务器上进行验证。所以,而不是:
如果任何人更改浏览器控制台中的值,这可能是一个大问题,因为他们可以更改角色,然后执行他们永远不应该做的事情
相反,正确的做法是,当客户端想要做一些事情(例如编辑他们的配置文件(时,让客户端将他们的身份验证令牌(或会话ID(以及其余的有效负载发送到服务器。让您的服务器检查令牌,检查与令牌关联的用户是否确实具有他们想要做的事情所需的权限,然后才能继续处理请求。
你是否也碰巧在Redux或其他地方存储了一些信息,都没有影响。
在客户端存储与登录相关的信息相对常见,本质上也不错——只要确保在请求需要权限的信息时始终在服务器上进行验证即可。
一些人使用的一种方法是服务器创建一个只有服务器才能解码的加密JWT,该JWT与请求一起发送。