授权提供者 |我可以在编辑 localStorage 变量的角色之间切换

AuthProvider | I am able switch among roles editing localStorage variables

我为我的客户开发了一个面板来监控他们业务的一些参数。其中只有少数将与他们的用户共享。

因此,我在 React-Admin 中创建了一个面板,然后添加了两个不同的角色(adminuser),它们可以访问完全不同的部分。很明显,admin角色的权限更高,监控的参数也更多。

所以,我基本上是从 docs 复制代码(配置 Auth 提供程序部分,src/authProvider.js)并且它工作正常。但是,我可以在两个角色之间切换,只需手动将 role 变量编辑为 localStorage.

我的意思是,我以 user 身份登录,打开 Dev Tools,转到 Local Storage,手动将 role=user 更改为 role=admin,刷新,我就可以观看了分配给 admin 角色的部分。

我是不是做错了什么(很可能,因为这是我使用 React-Admin 的第一个项目)?或者它可能是一种安全问题?

我认为问题应该出在authProvider.js,但如果你认为你需要查看代码的任何其他部分,显示它没有问题。

在此先感谢您的帮助。

如果您没有根据角色动态填充资源,那么它的可读性和暴露 'security risks' 无论如何。人们可以很容易地看到您正在与之交谈的所有 APIs 并开始处理这些。所有这些都没有改变 localstorage 中的值。但是,如果您的 API 没有强制执行角色检查……那就是一个更大的问题。任何知道这个把戏的人都会流血数据。毕竟,针对已知目标提出请求是微不足道的。 (我知道 api 上的验证角色在某种程度上违背了 JWT 的无状态性质,但在很多情况下这是必要的,例如这种情况)

React admin 带有示例,但与所有示例一样,他们并没有告诉您将其用于生产。您当然可以通过代码拆分或动态加载资源,让在前端更难找到有关提升角色的信息,但不要忘记后端。