15

GraphQLが最近リリースされ、クライアント側でクエリを作成することが奨励されているようです。

  1. GraphQL クエリをクライアント側で安全に記述できるのに、SQL クエリを安全に記述できないのはなぜですか?
  2. GraphQL はインジェクションの対象ではありませんか?
  3. クエリをクライアント側に置くことが非常に便利な場合は、SQL のバージョンをインジェクションの対象にしないでください。
4

1 に答える 1

15

これは、slack チャンネルで回答したユーザーから回答が得られなかったので、回答を投稿します。

  1. GraphQL クエリは、データをクライアントに公開するために明示的に構築されたスキーマに対して検証されます。SQL は、DB スキーマ構造以外に対してクエリを検証しません。
  2. 理論的には、GraphQL エンドポイントには、ユーザーがクエリの開始点でデータをクエリすることを許可されていることを検証するために、何らかのセキュリティが設定されています。それらがグラフベースのスキーマ内に入ると、パーミッションはgraphQLスキーマ定義に固有​​のものであり、インジェクションは何も達成しません.
  3. インジェクションの影響を受けないバージョンの SQL を作成するには、GraphQL と同じ検証がいくつか必要になります。要求されたすべてのデータ/ミューテーションが許可されているというある種の検証。チャットで引用されているように、「インジェクションは SQL 固有の問題ではありません」。

GraphQL/#general Slack チャットからのcharliesamwgoldmanによる回答。

于 2015-08-31T11:20:26.797 に答える