スキル graphql
📦

graphql

安全

ベストプラクティスによるセキュアな GraphQL API の構築

GraphQL の柔軟性は、適切な制御がないとパフォーマンスとセキュリティの問題を引き起こす可能性があります。このスキルでは、DataLoader の使用、クエリの深さ制限、認証に関する実証済みのパターンを提供し、本番対応の GraphQL API を構築します。

対応: Claude Codex Code(CC)
🥉 74 ブロンズ
1

スキルZIPをダウンロード

2

Claudeでアップロード

設定 → 機能 → スキル → スキルをアップロードへ移動

3

オンにして利用開始

テストする

「graphql」を使用しています。 E コマース製品カタログのスキーマを設計する

期待される結果:

  • Product、Category、Review タイプを備えた GraphQL スキーマ
  • discountPrice などのオプションフィールドの適切な null 可能性
  • 製品レビューのページネーションのための Connections
  • 入力タイプを伴う CRUD 操作のミューテーション

「graphql」を使用しています。 ユーザー投稿リゾルバーの N+1 クエリを修正する

期待される結果:

  • ユーザー ID 検索をバッチ処理する DataLoader 実装
  • 重複クエリを防止するためのユーザー ID をキーとしたキャッシュ
  • Apollo Server コンテキストとの統合
  • N クエリから 1 つのバッチクエリへのパフォーマンス改善

セキュリティ監査

安全
v1 • 2/25/2026

This skill is a documentation file containing GraphQL best practices and patterns. Static analysis flagged false positives: line 69 references related skills (not shell execution), and lines 3, 22, 34, 63, 72 contain markdown content (not cryptographic code). No executable code or security risks detected.

1
スキャンされたファイル
73
解析された行数
0
検出結果
1
総監査数
セキュリティ問題は見つかりませんでした
監査者: claude

品質スコア

38
アーキテクチャ
100
保守性
87
コンテンツ
50
コミュニティ
100
セキュリティ
91
仕様準拠

作れるもの

新しい API を構築するバックエンド開発者

最初から適切なパフォーマンス最適化とセキュリティ制御を備えた、本番対応の GraphQL API を設計・実装します。

GraphQL を統合するフロントエンドチーム

React アプリケーション向けに、正規化されたキャッシングと効率的なデータフェッチパターンを備えた Apollo Client を設定します。

既存の API を監査するテックリード

DataLoader の欠如、無制限のクエリの深さ、認証のギャップなど、一般的な GraphQL のアンチパターンを特定して修正します。

これらのプロンプトを試す

基本的な GraphQL スキーマの設計
User、Post、Comment タイプを備えたブログの GraphQL スキーマを作成してください。適切な null 可能性、リレーションシップ、およびクエリとミューテーションとしての一般的な CRUD 操作を含めてください。
N+1 防止のための DataLoader の実装
投稿の作成者を取得する GraphQL リゾルバーがあります。各投稿リゾルバーは個別のデータベースクエリを実行します。DataLoader を実装して、これらのクエリをバッチ処理しキャッシュする方法を示してください。
クエリの深さ制限の追加
深くネストされた GraphQL クエリからの DoS 攻撃を防止するため、Apollo Server 用のクエリの深さ制限と複雑度解析を設定してください。設定とエラー処理を含めてください。
フィールドレベルの認証の実装
GraphQL リゾルバーでフィールドレベルの認証を実装する方法を示してください。一部のフィールドは、認証されたユーザーまたは特定のロールを持つユーザーにのみ表示される必要があります。

ベストプラクティス

  • DataLoader を常に使用してデータベースクエリをバッチ処理し、N+1 問題を防止する
  • DoS 攻撃から保護するためにクエリの深さと複雑度を制限する
  • スキーマディレクティブだけでなく、リゾルバーで認証を実装する

回避

  • DataLoader なしにリゾルバーで直接データベース呼び出しを行う
  • GraphQL エンドポイントで無制限のクエリの深さを許可する
  • 認証ロジックをスキーマディレクティブのみに依存する

よくある質問

GraphQL に DataLoader が必要なのはなぜですか?
DataLoader なしでは、各フィールドリゾルバーは独立したデータベースクエリを実行します。10 件の投稿とその作成者を取得する単一のクエリは 11 件のクエリ(投稿に 1 件、作成者に 10 件)をトリガーします。DataLoader はこれらを 2 件のクエリにバッチ処理し、パフォーマンスを劇的に改善します。
本番環境でイントロスペクションを有効にすべきですか?
一般的に不要です。イントロスペクションはスキーマ構造全体をクライアントに公開します。開発ツールには役立ちますが、攻撃者が API を理解するのに役立つ可能性があります。クライアントツールのサポートが特に必要な場合を除き、本番環境では無効にしてください。
スキーマ認証とリゾルバー認証の違いは何ですか?
スキーマディレクティブはタイプ/フィールドレベルで誰が何にアクセスできるかを宣言します。リゾルバーの認証は実際のロジックを実装します。ディレクティブのみはバイパスまたは誤設定される可能性があるため、常にリゾルバーで認証を実装してください。
GraphQL でエラーと null データをどのように処理しますか?
スキーマで適切な null 可能性を使用してください。フィールドが空になる可能性がある場合は、null 可能にします。値が必要な場合は、null 不可にします。null 不可のフィールドが失敗すると、GraphQL は親オブジェクト全体を null にし、クエリが破損する可能性があります。
どのクエリの深さ制限を使用すべきですか?
ほとんどの API では深さ制限 5〜10 から始めてください。正当なクエリを監視し、適切に調整してください。また、クエリの複雑度解析を実装して、深さ制限を回避する高価だが浅いクエリをキャッチします。
GraphQL サブスクリプションをクリーンアップする必要がありますか?
はい。サブスクリプションはオープン接続を維持します。クライアントが切断したときは、メモリリークを防止するためにサーバー側のサブスクリプションハンドラーが適切にクリーンアップされていることを確認してください。適切なライフサイクルフックを使用して、サブスクリプションリゾルバーでクリーンアップを実装します。

開発者の詳細

作成者

sickn33

ライセンス

MIT

参照

main

ファイル構成

📄 SKILL.md