- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 React + firebase 应用程序。在用户的集合中,我有一个权限对象,我可以在其中跟踪用户有权访问的内容。然后在我的 React 应用程序中,我有以下内容:
// Login component
const userRecord = await Firebase.login(email,password)
store.user = await this.fetchUser(userRecord.uid)
对于仅限管理员的 View ,我将它们包装在一个 withAuthorization HOC 中,我在其中检查 store.user.permissions.admin
// Not exactly this, but this is the general idea
{store.user.permissions.admin && <RestrictedView />
我的问题是,用户可以更改 chrome 中的权限值以获得对受限 View 的访问权限吗?如果是这样,是否有更好的方法?我最终可能会使用 customClaims,但现在想使用上面的。
提前致谢!
最佳答案
始终假设对手可以完全控制浏览器。
通常,如果您希望您的应用能够抵御恶意实体,它的安全性必须来自服务器。制作可以由您的服务器验证的授权/不记名 token 或 cookie 方案(即 https://jwt.io/ )。然后只允许根据该信息将数据发送给您想要发送给的用户。前端的安全/验证更多是为了确保用户不会无意中搞砸事情。
用户可以通过各种开发工具修改浏览器中的任何 HTML/CSS/JS。
用户可以完全访问通过 JavaScript 发送的任何信息(即使它被缩小了,也有一些工具可以在某种程度上取消缩小)。
使用 React 的开发工具可以很容易地修改所有 React 状态,如果您使用的是 redux,则可能已经设置了 redux 开发工具。
在 firebase 中,有一个完整的 section on security在文档中。设置将在您的 RestrictedView
后面的数据,以要求您需要它们的身份验证级别。确保 firebase 负责您的应用程序安全。 section on insecure rules也是开始阅读 firebase 可以为您做什么以及如何做的好地方 configure their security rules .
OWASP Top Ten (2017) Broken Access Control (加粗是为了强调)
Access control is only effective if enforced in trusted server-sidecode or server-less API, where the attacker cannot modify the accesscontrol check or metadata.
With the exception of public resources, deny by default.
Implement access control mechanisms once and re-use them throughout the application, including minimizing CORS usage.
Model access controls should enforce record ownership, rather than accepting that the user can create, read, update, or delete anyrecord.
Unique application business limit requirements should be enforced by domain models.
Disable web server directory listing and ensure file metadata (e.g. .git) and backup files are not present within web roots.
Log access control failures, alert admins when appropriate (e.g. repeated failures).
Rate limit API and controller access to minimize the harm from automated attack tooling.
JWT tokens should be invalidated on the server after logout. Developers and QA staff should include functional access control unit and integration tests.
Understanding React Frontend security
We need to make one thing clear — everything you put in the clientbrowser can be easily changed by the client.
在那篇文章的后面:
How do I prevent the user from accessing non-public parts of my site?
You do it exactly as you though to do it — you create a variable, setit to true for admins only and once the check passes, show the adminonly content.
“Ok, that’s not secure at all — everyone can then go to the admin pageand delete everything!” you scream.
Fair — but only if you implement your application in a bad way. Thefrontend part should not be concerned with the validity or not ofcredentials provided. It should always accept the data as “true” andjust render all the data it is passed.
It it’s the backend job to perform this validation!
关于reactjs - 用户能否在 Chrome 中更改 Redux/Mobx 的值以获得对受限 View 的访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62028918/
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!