Empêcher l'abus de l'API OTP

Si des scripts interrogent en boucle votre flux d'envoi OTP, les utilisateurs reçoivent des codes non sollicités en masse, le solde est consommé rapidement et la réputation du canal peut baisser. EngageLab OTP peut limiter la fréquence et le volume côté envoi, mais ne peut pas bloquer un point de terminaison non authentifié « Obtenir le code de vérification » dans votre application.

Cet article explique comment combiner les capacités de la plateforme et les protections métier pour réduire l'abus d'API.

Architecture correcte

L'API EngageLab OTP ne doit être appelée que depuis votre serveur. Ne l'appelez pas directement depuis un navigateur, une application cliente ou un mini-programme.

Utilisateur → Votre frontend (connexion / inscription / réinitialisation du mot de passe) → Votre backend (vérification de session, CAPTCHA, limites métier) → API EngageLab OTP (avec la clé API et end_user_ip)
              
              Utilisateur → Votre frontend (connexion / inscription / réinitialisation du mot de passe)
     → Votre backend (vérification de session, CAPTCHA, limites métier)
     → API EngageLab OTP (avec la clé API et end_user_ip)

            
Afficher ce bloc de code dans la fenêtre flottante
  • Conservez dev_key et dev_secret uniquement côté serveur. Ne les placez pas dans le code frontend, les paquets d'application ou un dépôt public.
  • Le frontend ne doit appeler que votre propre API « Obtenir le code de vérification ». Ne vous connectez pas directement à https://otp.api.engagelab.cc.
  • Pour les clés API de production, configurez une liste blanche d'IP appelantes. Voir Clé API.

Ne pas mélanger les deux types d'IP

Paramètre Valeur à renseigner Ce que cela bloque
Liste blanche IP de la clé API L'IP de sortie de votre serveur Des IP inconnues qui appellent l'API OTP avec une clé
end_user_ip dans la requête d'envoi L'IP de l'utilisateur final La même IP utilisateur qui redemande des codes en peu de temps

Après avoir activé la limite « par adresse IP » dans le Centre de sécurité, vous devez transmettre end_user_ip dans la requête Envoi du code de vérification pour que la limite s'applique. Transmettez l'IP publique de l'appareil utilisateur, pas celle de votre serveur.

Protections côté plateforme

Effectuez la configuration suivante dans la console OTP pour limiter les pertes en cas d'abus d'envoi :

Action Objectif
Définir une liste blanche IP et une période de validité pour la clé API, et pouvoir la désactiver à tout moment Clé API Restreindre qui peut appeler l'API ; la désactiver immédiatement en cas de fuite
Activer les limites de fréquence pour le même numéro et la même IP Centre de sécurité Bloquer les envois répétés vers un numéro ou depuis une IP
Transmettre end_user_ip dans la requête d'envoi Envoi du code de vérification Faire appliquer la limitation par IP
Définir des valeurs d'alerte et de quota journalières / mensuelles Centre de sécurité Alerter ou mettre en pause automatiquement en cas de volume anormal
Définir une liste blanche ou noire par pays / région Centre de sécurité Éviter d'envoyer hors des zones métier
Mettre en pause le canal SMS en un clic en cas d'urgence Centre de sécurité Arrêter les pertes rapidement pendant un abus

Pour recevoir une notification lorsqu'une alerte ou un quota est atteint, configurez d'abord l'événement de callback dans Webhook.

Protections côté métier

Les limites de la plateforme ne remplacent pas la protection de votre propre API « Obtenir le code de vérification ». Effectuez ces contrôles avant d'appeler EngageLab :

  • Effectuez une vérification humaine (CAPTCHA image, Turnstile ou reCAPTCHA) avant l'envoi, et validez le résultat côté serveur.
  • Définissez un intervalle de renvoi pour le même numéro (par exemple 60 secondes) et affichez un compte à rebours sur le frontend.
  • Limitez les requêtes par compte, appareil et IP à la minute, à l'heure et au jour calendaire. Comptez aussi les requêtes en échec.
  • « Obtenir le code de vérification » doit inclure une session connectée, ou une session valide hors connexion. N'exposez pas un point d'envoi public sans contexte.
  • Limitez les tentatives pour le même code et invalidez-le dès la vérification réussie. EngageLab OTP ne permet pas de revérifier un code déjà validé.

Traiter les codes d'erreur comme des signaux d'abus

Envoi du code de vérification peut renvoyer les erreurs suivantes lors de la validation avant envoi. Ralentissez alors les nouvelles tentatives et vérifiez s'il y a un trafic concentré :

Code d'erreur Statut HTTP Signification
3004 400 Limite de fréquence dépassée pour le même modèle et le même destinataire ; la fenêtre suit la configuration du modèle
6001 429 Fréquence d'envoi dépassée pour le même numéro ; la fenêtre peut être la minute, l'heure ou le jour calendaire
6002 429 Fréquence d'envoi dépassée pour la même IP d'utilisateur final ; vérifié uniquement si end_user_ip est transmis
6003 429 Le volume d'envoi quotidien ou mensuel global de l'application a atteint le plafond
6007 403 L'envoi de codes SMS est en pause, pour tous les pays / régions ou pour celui en cours

Ne relancez pas immédiatement en boucle en cas de HTTP 429. Si cela persiste, vérifiez d'abord dans le Centre de sécurité un quota de volume ou un arrêt d'urgence, puis contactez le support.

Que faire en cas de fuite de secret

  1. Dans la console OTP, désactivez ou faites tourner la clé API.
  2. Dans le Centre de sécurité, utilisez l'arrêt d'urgence pour suspendre l'envoi SMS.
  3. Vérifiez les envois anormaux dans Historique et les callbacks.
  4. Resserrer la liste blanche IP de la clé API et vérifier si les quotas journaliers / mensuels sont raisonnables.
  5. Reprenez l'envoi uniquement une fois le risque écarté.

Liste de contrôle avant mise en production

  • L'API n'est appelée que depuis le serveur. dev_secret n'est pas dans le frontend, l'application ou un dépôt public.
  • La clé API de production a une liste blanche d'IP de sortie du serveur.
  • Les limites de fréquence par numéro sont activées dans le Centre de sécurité ; les requêtes d'envoi incluent end_user_ip si vous avez besoin de limites par IP.
  • Les quotas journaliers / mensuels sont définis, et les callbacks liés au volume sont configurés.
  • L'API « Obtenir le code de vérification » exécute CAPTCHA et limites métier avant d'appeler EngageLab.
  • L'ordre de réaction en cas d'abus est clair : désactiver la clé → arrêt d'urgence → examiner les enregistrements d'envoi.
Icon Solid Transparent White Qiyu
Contactez-nous