【问题标题】:Angular and secret keys角度和密钥
【发布时间】:2017-04-07 10:21:37
【问题描述】:

我一直在学习 Angular 2,并一直在研究如何保护我的应用程序中的数据。

如果可能,您如何阻止来自应用前端的数据?是否可以通过节点服务器为 Angular 应用程序提供服务,比如使用 Universal Angular,这意味着可以在前端对用户隐藏变量值。

我本质上是在寻找隐藏私钥的解决方案,这将使应用程序可以访问各种 API/创建身份验证标头/路径。我读过一个解决方案是为应用程序建立一个 API 桥 - 所以我会连接到它以检索数据/密钥 - 但是我如何保护它不被访问?由于该端点将被暴露并可能被滥用,或者如果获取密钥,则响应是可见的。锁定到我读过的域的想法是不可靠的,因为欺骗和锁定到 IP 不能作为其前端或通过应用程序工作?

我觉得有一个明显的答案是我遗漏了一些东西。

【问题讨论】:

    标签: javascript node.js angular


    【解决方案1】:

    很简单,当服务器发送数据作为对请求的响应时,就可以从外部访问数据了。 如果您不希望这样,请不要发送数据。

    您没有提及您实际尝试解决的问题。例如,对于 API 密钥,您可以向服务器上的 API 发出请求,并在您自己的服务器上为您的客户端提供 API,然后让服务器将请求转发到实际的 API 服务器。

    【讨论】:

    • 嗨 Günter,这是有道理的 - 但这就是让我对这个概念感到困惑的原因!假设我想连接到 API 以检索一些数据。该 API 显然需要进行身份验证才能获取数据,所以如果我通过自己的 API 代理它 - 什么会阻止我的 API 端点被暴露并且人们通过它访问它?我隐藏了连接,但门是开着的?然后我需要对其进行身份验证-但是如何保护它呢?好像是个循环
    • 这是一个难题。您想为好人提供免费和轻松的访问,但阻止坏人。如果您找到一个好的解决方案,请告诉我 ;-) 您可以做的是使用一些身份验证令牌,如果请求未提供该令牌,则不要转发呼叫。这样您就不会将 API 公开给任何人,也不会公开 API 密钥。
    • 那么,随着应用程序的加载,是否可以提供某种解决方案 - 对应用程序进行基本请求以获取 JWT?使用它对我自己的 API 进行身份验证?
    • 正确,如果随请求发送的JWT令牌有效,则转发请求,否则返回错误码。
    【解决方案2】:

    您必须假设任何可以访问您前端的人都可以看到您前端中的所有内容。 您前端的所有 JS 变量、存储(本地、会话)、网络请求等对您的前端用户都是不安全的。

    您可以(并且应该)使用 SSL 对位于您的服务器和浏览器之间的任何人隐藏数据,但是没有办法保护您的前端中保存的数据不被您的前端用户看到。 (至少如果您的前端在“常规”浏览器上可用,而不是在一些严格的信息亭模式安装上。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-24
      • 2011-08-22
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      相关资源
      最近更新 更多