GraphQL est certainement l'une des étoiles montantes du milieu des API. Il séduit toujours plus d’entreprises, et est actuellement déployé sur des centaines de milliers de sites. Armé de son langage homonyme et d'un paradigme bien différent du modèle REST, celui-ci tente de répondre à des problématiques d'optimisation, de simplification et de clarté. Mais qu’en est-il de la sécurité ?
1. GraphQL : principe et fonctionnement
Avant de s'intéresser à la sécurité d'un tel composant, il est bon de se familiariser avec celui-ci, afin de comprendre sa surface d'attaque, et de présenter quelques concepts clés au lecteur.
En aucun cas cette rapide introduction ne constitue une documentation exhaustive sur l'ensemble des fonctionnalités couvertes par GraphQL, ni sur les détails techniques associés aux types, à la syntaxe, ou encore au traitement des données côté serveur.
De multiples moteurs GraphQL existent sur le marché, mais nous nous focaliserons principalement sur des instances basées sur Apollo GraphQL [1], qui est à l’heure actuelle le moteur GraphQL le plus utilisé.
1.1 Qu’est-ce que GraphQL ?
GraphQL [2] est à la fois un langage de requêtes et manipulations de données, et un composant d'abstraction de bases de données pour API, créé par Facebook en 2012 et rendu public en 2015. Il promet d'apporter une solution aux...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première
[1] Documentation d’Apollo GraphQL : https://www.apollographql.com/docs/apollo-server/schema/schema/
[2] Site officiel de GraphQL : https://graphql.org/
[3] Application GraphQL Voyager : https://ivangoncharov.github.io/graphql-voyager/
[4] Dépôt de l’application DVGA (Damn Vulnerable GraphQL Application) :
https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application
[5] Dépôt de l’application POC GraphQL : https://github.com/righettod/poc-graphql
[6] Dépôt de l’outil Clairvoyance : https://github.com/nikitastupin/clairvoyance
[7] Site officiel de l’application Yelp : https://www.yelp.com/
[8] Dépôt de l’outil InQL : https://github.com/doyensec/inql
[9] Application BurpSuite : https://portswigger.net/burp