【问题标题】:Hide files from dev tools从开发工具中隐藏文件
【发布时间】:2020-03-15 15:20:47
【问题描述】:

我对 Web 开发还很陌生。我已经使用 react.js 构建了一些网络应用程序,并且在后端涉足了 Firebase、Flask 和 Express.js,但仅限于开发环境。我似乎找不到答案的一件事是如何防止最终用户通过 chrome 开发工具中的源文件查看重要数据。例如,隐藏包含 API 密钥的配置文件,或隐藏向数据库发送写入请求的 JavaScript 文件。另一个示例是发送 HTTP 请求或进行 API 调用的反应组件。我想隐藏请求/api调用的方式。谢谢!

【问题讨论】:

  • 标题中的问题与帖子正文中的问题不同。
  • @RobertHarvey 对不起,我意识到并改变了它。
  • 简短的回答是“不要将配置文件发送到浏览器。”
  • @RobertHarvey 我不知道该怎么做。假设我编写了一些前端 JavaScript,通过单击按钮进行 API 调用。我需要一个 API 密钥来拨打电话。我从配置文件中读取了该 API 密钥。怎么不能把配置文件发送到浏览器?

标签: javascript web server filesystems backend


【解决方案1】:

使您的数据库仅使用您的后端逻辑响应有效请求。例如在firebase中,使用firebase规则来限制读写访问

firebase 规则示例,任何人都可以创建一个帐户,(可能有更好的方法来只允许在 request.auth.uid !=null 时创建)用户可以在登录后更新他们的信息,但不能更新其他任何人和用户管理员的自定义声明可以更新任何人的信息

match /users/{fileName} {
allow read: if request.auth.uid != null;
allow create: if true;
allow update, delete: if request.auth.uid == fileName ||
request.auth.token.admin == true;
}

【讨论】:

  • 这是我的想法,但有些情况我仍然感到困惑。假设我希望任何用户都能够读取和写入 firebase 数据库。他们可以在 dev tolls 中打开发送写请求的 js 文件,并在请求发生的地方设置断点。然后,他们可以更改写入请求中的目标,并可能对数据库造成损害。我的问题是如何完全隐藏从开发工具发送写入请求的 js 文件。
  • 他们可以提出他们想要的所有请求,但如果你有正确的读写规则,一切都应该没问题。对于firebase,如果您的数据库中有文件,您只希望特定人员读取或写入您可以设置自定义声明,如管理员或其他。我在我的答案中添加了一个 Firebase 特定场景,假设您已经设置了身份验证
  • 谢谢!这绝对可以帮助我解决这个问题,但还有最后一件事我不确定。 Firebase 需要 API 密钥。我通常将所有 API 信息作为 json 对象存储在 config.js 文件中。如何防止这些信息被客户端读取/访问?
  • 我的荣幸!我也很担心,但根据这个答案:stackoverflow.com/a/37484053/10444206c 没关系
  • 谢谢!你在给出的上下文中回答了我的问题。
猜你喜欢
  • 2019-01-18
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多