当前位置: 首页 > 知识库问答 >
问题:

ReactJs安全

谢涵亮
2023-03-14

我刚刚开始学习react中的授权和身份验证,我在使用JWT完成我的第一个简单登录系统后写这篇文章,正如大多数人所知,您将一个令牌存储在浏览器中,然后将其与后端保存的令牌进行比较。现在,当验证真正完成时,我将Authenticated Boolean设置为true,并访问网站,完成这个简单的系统后,我检查了react-dev工具,发现我可以将布尔值更改为true,并绕过所有的身份验证工作!

我在网上搜索了一些资源和教程来解决这个巨大的问题,但没有找到我想要的是什么。我找到的只是如何像我那样设置身份验证或保护路由器,但安全性不高。

那么,有人能推荐一个付费或免费的课程或教程来学习更多关于安全性和身份验证的知识吗?


共有1个答案

呼延衡
2023-03-14

由于React应用程序是单页应用程序(如果您正在进行客户端渲染),因此整个应用程序(所有html/css/js文件)将在初始请求中发送到客户端。通常,身份验证的工作方式与您声明的用户身份验证状态存储在应用程序状态中的位置相同。当然,这意味着熟悉web应用程序的人能够将变量isAuthenticated设置为true。如果您有静态保存的敏感信息(用html/css/js逐字书写),那么这将是一个问题。

这种情况通常不被视为问题的原因是React应用程序通常不保存任何数据。数据通常是应用程序中的敏感内容。数据可以绑定到用户,不应向未经正确身份验证或没有所需权限的用户公开。数据由服务器保存,服务器可以控制它通过API向应用程序发送的内容(检查已验证的JWT)。因此,您的服务器应该在任何返回敏感信息的请求上检查有效的JWT,通常是除应用程序本身和身份验证请求之外的所有请求。

简而言之:是的,有人可以访问您应用程序的“已验证”端,但此时应用程序对API的任何数据请求都会(或应该)被阻止为未经授权(即状态401)。因此,他们可以看到应用程序在经过身份验证的用户看来是什么样子,但无法看到任何敏感信息。

(注意:如果您静态存储敏感信息(如上所述),请考虑将其存储在服务器上,并让应用程序通过API请求该信息,并要求有效的身份验证令牌)。

如果您想阻止未经身份验证的用户访问您的应用程序的已验证端,您可以将登录页面设置为其自己的应用程序或HTML文档,并仅将应用程序的完整/已验证版本发送给已验证的用户。

 类似资料:
  • 我试图初始化一个ReactJS项目通过安装一个ReactJS环境与CRA一个失败的类型拒绝返回给我 我安装了nodeJS环境,如下所示: 节点v14.15.4 npm v6.14.10 这些实用程序的路径是: 节点:/usr/本地/bin/节点npm:/usr/本地/bin/npm 然后我启动了使用CRA安装reactJS环境的官方命令: npx创建反应应用程序我的应用程序 服务器响应为: 在执行

  • React(有时叫React.js或ReactJS)是 Facebook 推出的一个为数据提供渲染为 HTML 视图,用来构建用户界面的开源 JavaScript 库。 React 视图通常采用包含以自定义 HTML 标记规定的其他组件的组件渲染。React 为程序员提供了一种子组件不能直接影响外层组件("data flows down")的模型,数据改变时对 HTML 文档的有效更新,和现代单页

  • 问题内容: 我目前正在使用reactjs构建一个单页面应用程序。我读到许多不使用localStorage的原因是由于XSS漏洞。由于React避开了所有用户输入,现在使用localStorage是否安全? 问题答案: 在大多数现代单页应用程序中,我们确实必须将令牌存储在客户端的某个位置(最常见的用例-在页面刷新后使用户保持登录状态)。 共有2个可用选项:Web存储(会话存储,本地存储)和客户端co

  • Reactjs-Pagination是一个React的本地分页组件,支持页码、跳转、和迷你模式。文档 安装 npm install --save reactjs-pagination 使用示例代码: import React, { Component } from 'react';import { Pagination }from 'reactjs-pagination'; class Test 

  • 我目前正在使用ReactJS构建一个单页应用程序。 我读到不使用的原因之一是因为XSS漏洞。 由于 React 会转义所有用户输入,现在使用 是否安全?

  • 问题内容: 我正在研究一个示例reactjs应用程序(在学习过程中)。我有一个页面,其中列出了用户列表和一个添加按钮以添加新用户。 当我单击添加按钮时,我应该导航到用户表单以创建新用户。 在用户表单中单击“提交”按钮后,它应导航回到第一页,在该页面中应列出用户列表以及新用户。 如何在页面之间导航做出反应? 问题答案: 您可以使用React Router来完成。这是React Router教程。 用