【问题标题】:Prevent users from seeing Meteor client script by role按角色阻止用户查看 Meteor 客户端脚本
【发布时间】:2016-05-15 21:41:20
【问题描述】:

在 Meteor 中,我们将所有敏感代码放在 /server 中,将浏览器代码放在 /client 中。 Meteor 然后自动为我们编译和缩小所有/client 边代码。谢谢流星。

但是,我使用https://github.com/alanning/meteor-roles 按用户角色管理内容。其中一个角色是管理员,我有一个仅供该用户使用的客户端脚本,例如:/client/admin-only/**.js。这些脚本中的所有代码都检查用户是管理员,并且只调用服务器来执行敏感任务,但我不希望除管理员之外的任何人都能够看到该代码。

我要确保的是,这些客户端管理 JS 文件仅下载给实际管理员的用户,而不包含在 Meteor 创建的自动编译/缩小的 JS 中。

有什么方法可以设置 Meteor 生成 2 个版本的客户端 JS - 一个供普通用户使用,一个供管理员使用 - 并且仅根据用户角色下载这些文件?

【问题讨论】:

  • 不。如果看到没有任何已发布数据的代码实际上非常令人担忧,您需要将其捆绑到一个单独的应用程序中。
  • 我们采用什么样的代码?为了同样的安全性,在服务器上定义它并且从不排除在客户端不是更好吗?尤其是权限检查。
  • 没错,这就是我正在做的,但您仍然需要客户端上的一些脚本。这就是我要隐藏的脚本。

标签: javascript security meteor roles


【解决方案1】:

Meteor Guide 解决了这个问题:

虽然您的应用程序的客户端代码必须可由浏览器访问,但每个应用程序在服务器上都会有一些您不想与世界共享的密码。您的应用程序中的秘密业务逻辑应位于仅在服务器上加载的代码中。这意味着它位于应用程序的 server/ 目录中,位于仅包含在服务器上的包中,或位于仅在服务器上加载的包内的文件中。

基本上,MDG 的指导是尽可能地简化管理视图。如果这不可接受,您需要将其捆绑在单独的 Meteor 应用程序中,或者仅在内部可访问的网络上,或者使用 two MongoDB instances,这样您就可以为第二个应用程序单独进行身份验证。

【讨论】:

  • 是的,这就是我所做的。我想要做的是完全删除客户端代码。
猜你喜欢
  • 2015-09-10
  • 1970-01-01
  • 2020-09-19
  • 2019-05-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 2016-07-23
  • 2020-08-25
相关资源
最近更新 更多