15

GraphQL最近发布,它似乎鼓励在客户端编写查询。

  1. 是什么使得在客户端编写 GraphQL 查询而不是 SQL 查询变得安全?
  2. GraphQL 不受注入的影响吗?
  3. 如果让您的查询在客户端非常有用,为什么不制作一个不受注入影响的 SQL 版本呢?
4

1 回答 1

15

由于在松弛频道中回答的用户没有回答这个问题,我将发布他们的答案。

  1. GraphQL 查询针对明确构建以向客户端公开数据的模式进行验证。SQL 不会根据数据库架构结构以外的任何内容验证您的查询。
  2. 从理论上讲,您的 GraphQL 端点具有某种安全性来验证用户是否可以在查询的起点查询数据。一旦它们在基于 Graph 的模式中,权限是 graphQL 模式定义所固有的,并且注入不会完成任何事情。
  3. 制作不受注入影响的 SQL 版本将涉及一些与 GraphQL 相同的验证。允许所有请求的数据/突变的某种验证。正如聊天中所引用的,“注入不是 SQL 固有的问题”。

来自 GraphQL/#general Slack 聊天的答案归功于charliesamwgoldman 。

于 2015-08-31T11:20:26.797 回答