GraphQL ist eine Abfragesprache und Laufzeit für APIs. Clients beschreiben die benötigten Felder, während das Schema Typen, Beziehungen, Queries und Mutations vorgibt. Ein einzelner Endpunkt ersetzt häufig viele REST-Routen. Das reduziert Over- und Underfetching, verlagert aber Sicherheit in Resolver, Feldrechte und die Begrenzung frei kombinierbarer Abfragen.
Beispiel einer Abfrage
query Order($id: ID!) {
order(id: $id) {
id
status
customer { email }
}
}
Das Schema verhindert nicht automatisch, dass ein Benutzer fremde Bestellungen oder das E-Mail-Feld liest. Autorisierung muss für Objekt und gegebenenfalls Feld im Resolver oder einer zentralen Policy erfolgen.
Unsicherer und sicherer Resolver
// Unsicher: jedes angemeldete Konto kann jede ID abfragen
order: (_, { id }, ctx) => db.orders.findById(id)
// Besser: Mandant und Berechtigung sind Teil der Abfrage
order: async (_, { id }, ctx) => {
requireAuthenticated(ctx.user);
return db.orders.findOne({
id,
tenantId: ctx.user.tenantId,
readableBy: ctx.user.id
});
}
Typische GraphQL-Schwachstellen
- BOLA/IDOR:
Resolver laden Objekte nur anhand einer vom Client gelieferten ID. - Feldautorisierung:
Vertrauliche Felder sind über verschachtelte Pfade erreichbar. - Denial of Service:
Tiefe, zyklische, aliased oder gebatchte Abfragen vervielfachen Arbeit. - Mass Assignment:
Input-Objekte werden ungefiltert auf Datenmodelle übertragen. - Informationsleck:
Introspection, Fehlermeldungen und Vorschläge offenbaren internes Schema und Technologien. - Injection:
Resolver übergeben Argumente unsicher an Datenbanken, Templates oder Betriebssysteme.
Wie wird GraphQL abgesichert?
- - Objekt- und Feldberechtigungen zentral und standardmäßig ablehnend implementieren.
- - Inputs mit Schema plus fachlichen Regeln validieren; Datenbankmodelle nicht direkt binden.
- - Query-Kosten anhand Tiefe, Feldern, Listenlimits und Resolveraufwand begrenzen.
- - Pagination, maximale Page Size, Timeouts und Rate Limits pro Identität verwenden.
- - Persisted Queries oder Allowlisting für besonders kontrollierte Clients erwägen.
- - Introspection in Produktion risikobasiert entscheiden; das Abschalten behebt keine Autorisierungsfehler.
Nützliche Open-Source-Werkzeuge
GraphQL Cop prüft häufige Fehlkonfigurationen. GraphQLmap unterstützt autorisierte manuelle Tests, und Clairvoyance kann über Fehlervorschläge Teile eines Schemas rekonstruieren. Die Werkzeuge finden keine vollständige Geschäftslogik: Testkonten mit verschiedenen Rollen und negative Resolver-Tests bleiben notwendig.
Vielen Dank für dein Feedback! Wir werden es prüfen und unseren Artikel anpassen.
Hast du Feedback zum Thema GraphQL? Schreib uns!
Weitere Dienstleistungen
Zusätzliche IT-Sicherheitslösungen für umfassenden Schutz
Red Teaming
Simulation echter Angriffe auf Ihr Unternehmen inklusive Personen, Infrastruktur und Prozesse. Ein umfassender Ansatz zur Überprüfung Ihrer gesamten Sicherheitsstrategie.
Mehr erfahrenPhishing-Übungen
Praxisnahe Phishing-Simulationen zur Sensibilisierung Ihrer Mitarbeiter. Erhöhen Sie die Awareness und reduzieren Sie das Risiko erfolgreicher E-Mail-basierter Angriffe.
Mehr erfahren