【问题标题】:Secure requests in nodejsnodejs中的安全请求
【发布时间】:2018-05-24 15:30:12
【问题描述】:

我有一个应用程序。我的应用程序有 3 层。

  • 前端(包含前端设计和功能)
  • 后端 1(第 2 层 - 这是从前端层获取数据并提供给包含数据库操作的后端 2 的后端服务器。该层只是一个传输器)
  • 后端 3 是另一个后端,它通过从第 2 层获取的数据触发数据库操作。

当一个 XHR 请求从前端发送时,它会到达第 2 层,在 Nodejs 服务器的第 2 层中,它会添加一个 API 密钥并通过特殊地址将请求转发到后端 2。在后端 2 中,它会先检查 API 密钥然后触发操作。

例子:

1- form submited in front end to "/api/create_user"

2- in front-end 2 -> request handled "/api/create_user" get the request and 
   send to "/api/create_user_dkfjhierhgeirhuggridrfjkndf/APIKEY"

3- in back-end 2 -> it check the the request address and APIKEY then trigger 
   the request.

问题是有人通过他们从我的应用程序中创建的应用程序发送了一些请求。

我的问题是如何检查第 2 层中的请求并确保此请求来自我们的前端而不是来自我们的应用程序?

【问题讨论】:

  • “问题是有人通过他们从我的应用程序中创建的应用程序发送了一些请求。”所以他们已经根据你的应用构建了自己的应用程序?我会说每个表单提供/需要一个唯一的密钥,以及速率限制,因此人们不能太频繁地获取密钥。
  • 我的问题是我想识别请求完全来自我的前端而不是来自我的应用程序。

标签: node.js rest security request


【解决方案1】:

所以...您在 Internet 上有一个 API,以及一个使用该 API 的 Web 应用程序。

有人查看了您的应用程序,弄清楚了您的 API 调用是什么(逆向工程),然后他们编写了自己的前端。

如果您的应用程序是一个网站,您可以强制执行一些操作。 CORS 就是其中之一。 https://en.wikipedia.org/wiki/Cross-origin_resource_sharing

使用 CORS,网络浏览器会加载网页并查看 javascript xhr 请求。网络浏览器首先询问网络服务器该网页是否有权访问网络服务器。

这依赖于强制访问的网络浏览器。如果您的对手正在使用 curl 之类的应用,那么您无能为力。

最常见的缓解措施是要求用户注册并且用户需要登录。即使这样也可以玩弄,但现在对手需要复制您的登录流程,并获取登录凭据。

我知道的最终缓解措施 - 您可以继续让对手难以获取您的网页。您可以设置一个随机 cookie 并为每个请求验证该 cookie。您可以在 HTML 中设置一个密码,然后将其与您的 XHR 请求一起传递(例如在标头中设置)并验证它是否存在。您可以更改您的 API 名称,甚至每天让它们随机变化。所有这些都需要对手弄清楚,在他们弄清楚之前,他们处于离线状态。如果它经常离线,他们可能会放弃。

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多