📦

graphql

آمن

최선의 실무로 안전한 GraphQL API 구축하기

GraphQL 의 유연성은 적절한 제어 장치 없이는 성능 및 보안 문제로 이어질 수 있습니다. 이 스킬은 DataLoader 사용, 쿼리 깊이 제한, 권한 부여에 대한 검증된 패턴을 제공하여 프로덕션 준비가 된 GraphQL API 를 구축할 수 있게 합니다.

يدعم: Claude Codex Code(CC)
📊 71 كافٍ
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "graphql". 이커머스 제품 카탈로그용 스키마 설계

النتيجة المتوقعة:

  • Product, Category, Review 타입을 갖춘 GraphQL 스키마
  • discountPrice 와 같은 선택적 필드에 대한 적절한 nullability
  • 제품 리뷰에 대한 페이지네이션을 위한 connections
  • input 타입을 사용한 CRUD 연산을 위한 뮤테이션

استخدام "graphql". 사용자 post 리졸버에서 N+1 쿼리 수정

النتيجة المتوقعة:

  • 사용자 ID 조회를 배치하는 DataLoader 구현
  • 중복 쿼리 방지를 위해 사용자 ID 로 키된 캐시
  • Apollo Server context 와 통합
  • 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 스키마를 생성하세요. 적절한 nullability, 관계, 그리고 쿼리와 뮤테이션으로서의 일반적인 CRUD 연산을 포함하세요.
N+1 방지를 위한 DataLoader 구현
post 에 대한 author 를 페치하는 GraphQL 리졸버가 있습니다. 각 post 리졸버가 별도의 데이터베이스 쿼리를 실행합니다. 이러한 쿼리를 배치하고 캐싱하도록 DataLoader 를 구현하는 방법을 보여주세요.
쿼리 깊이 제한 추가
깊게 중첩된 GraphQL 쿼리로 인한 DoS 공격을 방지하기 위해 Apollo Server 에 쿼리 깊이 제한 및 복잡도 분석을 설정하세요. 구성 및 오류 처리를 포함하세요.
필드 레벨 권한 부여 구현
GraphQL 리졸버에서 필드 레벨 권한 부여를 구현하는 방법을 보여주세요. 일부 필드는 인증된 사용자 또는 특정 역할을 가진 사용자만 볼 수 있어야 합니다.

أفضل الممارسات

  • 항상 DataLoader 를 사용하여 데이터베이스 쿼리를 배치하고 N+1 문제 방지
  • DoS 공격으로부터 보호하기 위해 쿼리 깊이와 복잡도 제한
  • 스키마 디렉티브뿐만 아니라 리졸버에서도 권한 부여 구현

تجنب

  • DataLoader 없이 리졸버에서 직접 데이터베이스 호출 수행
  • GraphQL 엔드포인트에서 제한 없는 쿼리 깊이 허용
  • 권한 부여 로직을 스키마 디렉티브에만 의존

الأسئلة المتكررة

GraphQL 에 DataLoader 가 필요한 이유는 무엇인가요?
DataLoader 가 없으면 각 필드 리졸버가 독립적인 데이터베이스 쿼리를 실행합니다. 10 개의 post 와 해당 author 를 페치하는 단일 쿼리는 11 개의 쿼리를 트리거합니다 (post 용 1 개, author 용 10 개). DataLoader 는 이를 2 개의 쿼리로 배치하여 성능을 극적으로 향상시킵니다.
프로덕션에서 introspection 을 활성화해야 하나요?
일반적으로 아니오입니다. Introspection 은 전체 스키마 구조를 클라이언트에 노출시킵니다. 개발 도구에 유용하지만 공격자가 API 를 이해하는 데 도움이 될 수 있습니다. 클라이언트 도구 지원이 특별히 필요하지 않은 한 프로덕션에서 비활성화하세요.
스키마와 리졸버 권한 부여의 차이점은 무엇인가요?
스키마 디렉티브는 타입/필드 레벨에서 누가 무엇에 접근할 수 있는지 선언합니다. 리졸버 권한 부여는 실제 로직을 구현합니다. 항상 리졸버에서 권한 부여를 구현하세요; 디렉티브만 사용하면 우회되거나 잘못 구성될 수 있습니다.
GraphQL 에서 오류와 null 데이터를 어떻게 처리하나요?
스키마에서 적절한 nullability 를 사용하세요. 필드가 합리적으로 비어 있을 수 있다면 nullable 로 만드세요. 값이 있어야 한다면 non-null 로 만드세요. non-null 필드가 실패하면 GraphQL 은 전체 부모 객체를 null 로 만들고, 이는 쿼리를 중단시킬 수 있습니다.
어떤 쿼리 깊이 제한을 사용해야 하나요?
대부분의 API 에 대해 깊이 제한 5-10 으로 시작하세요. 합법적인 쿼리를 모니터링하고 적절히 조정하세요. 또한 깊이 제한을 우회하는 얕지만 비용이 큰 쿼리를 감지하기 위해 쿼리 복잡도 분석을 구현하세요.
GraphQL subscription 을 정리해야 하나요?
예입니다. Subscription 은 열린 연결을 유지합니다. 클라이언트가 연결을 끊을 때 서버 측 subscription 핸들러가 적절히 정리되어 메모리 누수를 방지해야 합니다. 적절한 라이프사이클 훅을 사용하여 subscription 리졸버에서 정리를 구현하세요.

تفاصيل المطور

المؤلف

sickn33

الترخيص

MIT

مرجع

main

بنية الملفات

📄 SKILL.md