Skip to main content

Bonnes pratiques de sécurité

Protection des clés API

  • Gardez vos clés API sécurisées : Ne les exposez jamais dans le code côté client
  • Accès complet : Les clés API fournissent un accès complet à votre compte d’entreprise
  • Rotation régulière : Faites tourner vos clés régulièrement pour une sécurité renforcée
  • HTTPS obligatoire : Utilisez HTTPS pour toutes les requêtes API

Authentification des webhooks

Lorsque vous recevez des notifications webhook, vous devez vérifier leur authenticité :
  • Vérification de la signature : Utilisez l’en-tête Jeko-Signature pour vérifier l’authenticité des webhooks
  • Algorithme : La signature est générée en utilisant HMAC-SHA256 avec votre secret webhook
  • HTTPS pour les endpoints : Utilisez des endpoints HTTPS pour vos URLs de webhook

Gestion des erreurs

  • Ne loggez jamais les clés API dans vos journaux
  • Ne partagez jamais vos clés API via des canaux non sécurisés
  • Utilisez des variables d’environnement pour stocker vos clés API

Limitation de débit (Rate Limiting)

Pour garantir la stabilité et la disponibilité de l’API pour tous les utilisateurs, Jeko applique des limites de débit au niveau applicatif.

Caractéristiques clés

Les limites sont appliquées par entreprise (business), et non par clé API. Cela signifie que la création de plusieurs clés API ne permet pas de contourner les limites.

Limites appliquées

Type de limiteQuotaFenêtre de temps
Limite standard500 requêtespar minute
Limite burst1000 requêtespar 5 minutes

Comportement en cas de dépassement

Lorsque les limites sont dépassées :
  1. Blocage temporaire : Votre entreprise sera temporairement bloquée pendant 10 à 15 minutes
  2. Réponse HTTP 429 : Toutes les requêtes pendant la période de blocage recevront une réponse 429 Too Many Requests
  3. Journalisation : Les dépassements de limite sont enregistrés pour le monitoring

Exemple de réponse 429

{
  "statusCode": 429,
  "error": "Too Many Requests",
  "message": "Rate limit exceeded. Please retry after some time."
}

Bonnes pratiques pour éviter le rate limiting

Implémenter le backoff exponentiel

En cas d’erreur 429, attendez progressivement plus longtemps entre chaque tentative (ex: 1s, 2s, 4s, 8s…)

Mettre en cache les réponses

Évitez les appels répétitifs pour les mêmes données en utilisant un cache local

Regrouper les requêtes

Utilisez les endpoints batch lorsqu’ils sont disponibles plutôt que des requêtes individuelles

Surveiller votre consommation

Implémentez un monitoring pour suivre votre utilisation de l’API

Exemple d’implémentation du backoff exponentiel

async function makeRequestWithRetry(url, options, maxRetries = 5) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const response = await fetch(url, options);
    
    if (response.status === 429) {
      // Backoff exponentiel: 1s, 2s, 4s, 8s, 16s
      const waitTime = Math.pow(2, attempt) * 1000;
      console.log(`Rate limited. Waiting ${waitTime}ms before retry...`);
      await new Promise(resolve => setTimeout(resolve, waitTime));
      continue;
    }
    
    return response;
  }
  
  throw new Error('Max retries exceeded');
}
import time
import requests

def make_request_with_retry(url, headers, max_retries=5):
    for attempt in range(max_retries):
        response = requests.get(url, headers=headers)
        
        if response.status_code == 429:
            # Backoff exponentiel: 1s, 2s, 4s, 8s, 16s
            wait_time = (2 ** attempt)
            print(f"Rate limited. Waiting {wait_time}s before retry...")
            time.sleep(wait_time)
            continue
        
        return response
    
    raise Exception('Max retries exceeded')
Si vous avez besoin de limites plus élevées pour votre cas d’utilisation, veuillez contacter notre équipe à hello@jeko.africa pour discuter de vos besoins.