스킬 graphql
📦

graphql

안전

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

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

지원: Claude Codex Code(CC)
📊 71 적절함
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
콘텐츠
32
커뮤니티
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 サブスクリプションをクリーンアップする必要がありますか?
はい。サブスクリプションはオープン接続を維持します。クライアントが切断したときは、メモリリークを防止するためにサーバー側のサブスクリプションハンドラーが適切にクリーンアップされていることを確認してください。適切なライフサイクルフックを使用して、サブスクリプションリゾルバーでクリーンアップを実装します。

개발자 세부 정보

파일 구조

📄 SKILL.md