【问题标题】:Make GraphQL api secure使 GraphQL api 安全
【发布时间】:2023-01-27 04:06:37
【问题描述】:

我开始将 GQL 与 Express 结合使用(这太棒了)。所以我有几个问题。

  1. 我怎样才能使 GQL 安全,以便只有我才能访问 API 和 playground。就像 Instagram 一样。您无法访问他们的“游乐场”。

  2. 当我使用 rest api 时,我通过 Headers 发送令牌以确保安全。现在把它们放在哪里?

      app.use(
        "/graphql",
        graphqlHTTP({
          schema,
          graphiql: true,
        })
      )
    

    谢谢你。

【问题讨论】:

  • 您无法访问 Instagram 的“游乐场”。“——你怎么知道他们有一个?
  • 为了安全起见,我正在通过 Headers 发送令牌” - 做同样的事情?GraphQL 仍然是一个 HTTP API,并且您以完全相同的方式进行身份验证。
  • 如果你使用 graphql 只是为了减少数据集而不是其他目的......那么我建议你检查 - github.com/restmap/restmap-node

标签: javascript typescript express graphql


【解决方案1】:
  1. 我强烈建议你不要让你的操场开着 生产。游乐场是一种网络应用程序,具有自身的复杂性,因此也具有自身的漏洞。见Hacking GraphQL Playground
  2. GraphQL 中的身份验证处理与 REST 中的完全相同。实际上,您甚至可以通过 GraphQL 应用程序进行 REST 身份验证。您可以在这里找到更多关于如何在 GraphQL 中正确管理身份验证、授权和访问控制的信息:Authentication, Authorization and Access Control for GraphQL

【讨论】:

    【解决方案2】:

    对于 1) playground 是用你那里的 graphiql 标志打开或关闭的。至于保护它,你会想使用一个中间层来检查某种传入的令牌,并根据对该令牌的验证来允许/拒绝。

    1. GraphQL 在这方面的工作方式与 REST 端点完全相同。标头中的标记是标准。

    【讨论】:

      猜你喜欢
      • 2021-02-19
      • 1970-01-01
      • 2020-07-22
      • 2019-03-10
      • 2019-04-16
      • 2019-03-02
      • 2019-12-15
      • 2013-01-23
      • 2021-02-07
      相关资源
      最近更新 更多