【问题标题】:Securing API with Node使用 Node 保护 API
【发布时间】:2016-03-11 17:19:11
【问题描述】:

我正在尝试构建我的第一个 API,供使用 Ionic 构建的移动应用程序使用。

在开始之前,我正在研究架构,但我无法确切了解如何确保我的 API 路由安全。

假设我有一个类似http://myapi/v1/get-items 的端点,并且我的应用程序不需要用户进行身份验证即可在移动应用程序中查看这些项目。

我应该如何保护该路由免受外部查询的影响,例如使用 Postman?

我希望除非应用程序没有请求,否则该路由不可访问。

在 Google 上我可以找到许多使用基本身份验证的解决方案,但所有这些都需要用户登录...如果我的应用没有用户登录怎么办?

我有点困惑,但我认为有一个解决方案,但我还不知道......

希望你能帮助我理解它。

编辑

我的问题与以下完全不同:How to implement a secure REST API with node.js

我正在寻找需要用户身份验证的解决方案。

【问题讨论】:

  • @Jitendra 谢谢,但它正在谈论用户身份验证......我正在寻找没有用户身份验证的解决方案......:/
  • Helmet 怎么样?我还在google,我不知道这个包,但可能它可以解决问题?
  • @AyeyeBrazo 头盔的用途完全不同。如果您的移动应用程序已关闭源代码,那么只需为其中的请求创建一些加密。密钥在应用程序中是安全的,因为预先在其中实现,服务器将知道如何解密请求。

标签: javascript node.js api security


【解决方案1】:

如果您不想通过 Passport 之类的方式使用用户身份验证,那么您可以在 Node API 中建立白名单。 express-ipfilter 是一个快速中间件模块,允许您根据请求 IP 过滤请求。

【讨论】:

    【解决方案2】:

    要求登录将是确保您的 api 保持私密的最干净、最安全的方法。但是,如果您想在不需要登录的情况下阻止外部用户访问您的服务,则需要“签署”您的请求。我的意思是做一些事情,比如使用服务器和客户端应用程序都知道的密钥加密客户端上的当前时间戳,将该加密字符串添加为标头,在您的服务器中接收该标头,解密它并检查它不是太返回响应之前的时间戳。

    这不是很安全(如果有人可以看到他们可以看到加密密钥的代码),但这是一个障碍,并且不需要登录。有关加密/解密的示例,请参阅 this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多