我正在使用React和django作为后端来构建应用程序。
我已经设置并运行了JWT身份验证。但是我想知道是否包含菜单项和视图逻辑(这些视图仅显示给特定用户并且包含敏感信息)是否安全。当然,这些视图仅对相关用户可见。
我的问题是,是否有人可以从react build中提取信息?如果是这样,避免这种情况的最佳做法是什么?
答案 0 :(得分:1)
您的JavaScript代码不应包含敏感信息。当实际渲染需要显示的屏幕时,应动态获取此类信息并根据每个请求检查权限。
如果您甚至想隐藏某些屏幕,以使用户看不到他们应用程序中不可用的某些功能,则您需要将这些屏幕捆绑到另一个应用程序中,然后在另一个网址中投放,否则您可以动态获取包含这些视图的javascript。
通常,这样做不值得,因为您应该专注于正确检查api的权限。
编辑:
假设我想动态获取带有敏感视图的JS并将其添加到我的应用程序中,我该怎么做?
我假设您正在使用Webpack 2捆绑您的React应用程序?然后,您需要对需要动态加载的零件使用dynamic imports。然后在django中,您需要一个自定义视图,该视图可提供您的静态文件,并在请求时检查访问该应用程序此部分的权限。
This tutorial说明了如何使用webpack 2延迟加载组件。
答案 1 :(得分:0)
我猜您是在JWT令牌本身中编码用户角色,并使用诸如jwt-decode之类的代码对用户角色进行精确编码,然后将匹配到角色以呈现不同的组件。
例如,您可能正在做类似检查“管理员”角色的操作,并在导航栏中为/ admin路由呈现链接。我认为我可以安全地这样做。 但是,如果用户查看您的代码并发现存在/ admin路由并尝试访问它,该怎么办?
因此,您还必须在逻辑中包含逻辑以检查角色“ admin”,并在角色不匹配时提供“ 404”之类的信息。
用户角色匹配后,您可以动态获取任何路由。