对状态管理做出反应

时间:2020-02-05 13:42:15

标签: reactjs typescript react-hooks

假设我有以下代码:

const UserProfile: React.FC<RouteComponentProps> = (props) => {

    const { isAdmin} = useContext(GlobalContext);

    if (isAdmin()) {
      return <CriticalFeature/>;
    } else {
    return <NonCriticalFeature/>;
    }

}

export default UserProfile;

此代码的问题是,有人可以打开react网页并查看该状态并进行更改(例如使用默认的react工具)。然后,用户将充当管理员(我知道...由于身份验证,不在服务器端,但仍然会从管理页面上看到至少一些代码)。

您如何处理这种情况?

2 个答案:

答案 0 :(得分:2)

如果您允许浏览器获取呈现/处理CriticalFeature的代码,则游戏结束了。用户可以呈现或分析该代码。

唯一的解决方法是永远不要将CriticalFeature的代码提供给未经授权的用户。为此,管理员个人资料页面的URL应该与非管理员用户的URL不同,并且CriticalFeature的代码应放在单独的捆绑软件中,仅提供给授权用户。

IDK(如果需要此级别的隔离);快速浏览管理员界面将不会允许未经授权的用户执行任何需要管理员权限的操作。仅当您需要密切保护管理员可用的功能集时,才可能要实现上述功能。

答案 1 :(得分:0)

确实有人可以修改状态并呈现CriticalFeature组件,但是在这种情况下,最好的做法是向后端发送经过身份验证的请求。

因此,即使有人可以渲染组件,他们也无法在服务器中模拟管理员配置文件。

只需确保您拥有适当的身份验证