Sécuriser une API

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Je suis en train de créer une API pour une application mobile (ou autre client, peu importe). Cependant je bloque un peu pour rendre cette API uniquement accessible par mon application. J’ai lu plusieurs solutions, mais conceptuellement je vois pas vraiment comment une solution pourrais marcher.

Par exemple en utilisant HMAC ou Oauth2 avec une clé privée et une clé publique. Il faut bien stocker la clé privée quelques part dans l’application, et donc une personne extérieur pourra la retrouver et simuler le comportement de l’application pour communiquer avec l’API.

Concrètement mon problème c’est : Une personne pourra toujours trouver une solution pour obtenir le code source du client (du moins réussir à obtenir la clé privé, ou tout autre moyen qui identifie le client) et donc un second client pourra se faire passé pour un client connu par le serveur.

Du coup, est-ce que mon raisonnement est faux quelque part, et quel est le moyen pour sécuriser une API ?

Merci :)

+2 -0

Cette réponse a aidé l’auteur du sujet

Ton analyse est bonne. Ce que tu peux faire c’est compliquer la tâche.

Surtout passe en HTTPS et vérifie la validité du certificat pour éviter le middleman. Ça compliquera déjà pas mal le travail. Mon premier réflexe, si je dois utiliser une api "fermé" d’un programme est de créer une application de type proxy pour espionner et comprendre les échanges. Ensuite je recréer un script qui correspond aux échanges que j’ai vu, sans avoir eu besoin de "décompiler" le programme.

Si ça doit être plus compliqué je n’essaye pas.

Édité par A-312

✈️ // 🐺 Ami des loups // 🎮 Coding Game // 🐤 Twitter @A312_zds // :B // L’hiver vient // @**A-312** pour me ping

+1 -0

C’est un risque à prendre en fait. Après si ta clé privée est corrompue, rien ne t’empêche d’en changer. Faudra mettre à jour l’app pour tout le monde, mais l’ancienne clé étant invalidée l’attaquant ne pourra plus l’utiliser non plus.

C’est comme ça pour beaucoup d’APIs en fait…

Mes tutos — Développeur JS (front principalement) — Consultant qualité, ergonomie et UX

+0 -0

Il faut essayer de mettre toute la sécurité au niveau du serveur et pas du client. Si tu veux forcer à utiliser ton client c’est pour enforce un comportement codé dans le client. Enforce le plutôt dans le code du serveur. Je sais pas si dans ton cas c’est possible, mais si tu fais un client web par exemple, tu n’auras pas le choix. Never trust client.

L’obfuscation n’est pas une sécurité.

Édité par Society

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte