Considérations de sécurité
La sécurité demeure la priorité absolue dans le domaine des transactions financières en ligne.Intégration
Pour garantir que les échanges entre le marchand et HUB2 restent confidentiels, et que seul le marchand est à l’origine des transactions (et donc du montant et des autres propriétés de celles-ci), l’intégration de l’API ne doit se faire que du côté serveur. Les données sensibles, telles que les clés API, ne doivent jamais être divulguées, que ce soit sur un site web ou dans une application mobile. Cette approche renforce la sécurité en évitant l’exposition directe des clés API et des informations sensibles du côté client. En effectuant les transactions du côté serveur, les risques d’attaques malveillantes, telles que les manipulations de données côté client, sont considérablement réduits.CORS
Pour se prémunir des éventuelles intégrations côté client, l’API HUB2 est paramétrée pour ne jamais pouvoir être chargée depuis le navigateur du client final. En d’autres termes, les en-têtes HTTP concernant le partage des ressources entre origines multiples (CORS) ont été correctement paramétrées.Signature
Afin d’améliorer la sécurité et l’intégrité des interactions avec l’API, un mécanisme optionnel de signature de la charge utile est disponible. Cette fonctionnalité permet aux marchands de signer cryptographiquement le corps de la requête JSON envoyé à l’API. En vérifiant cette signature, il est possible de s’assurer que les données n’ont pas été altérées pendant le transfert et qu’elles proviennent d’une source de confiance. Cette couche de sécurité supplémentaire est particulièrement utile pour les transactions financières sensibles. Consultez la page d’intégration pour comprendre comment le mettre en place.Mécanismes de sécurité de la plateforme
Afin de protéger la plateforme HUB2, plusieurs composants de sécurité sont mis en œuvre à différents niveaux de l’infrastructure. Au niveau du périmètre, un Web Application Firewall (WAF) analyse chaque requête HTTP avant de la transmettre au backend. Son rôle principal est de détecter et de bloquer les requêtes HTTP malveillantes avant qu’elles n’atteignent la couche applicative. Pour les requêtes rejetées, les clients seront confrontés au comportement suivant :
Comportement du WAF
Ici, une injection SQL (SQLi attack) est simulée sur l’API HUB2.
Le pare-feu web applicatif rejette immédiatement la requête et renvoit une réponse avec le statut
Le pare-feu web applicatif rejette immédiatement la requête et renvoit une réponse avec le statut
HTTP 403 Forbidden.Résolution des erreurs HTTP 403 Forbidden courantes
Si une requête légitime rencontre une erreur HTTP 403 Forbidden, veuillez d’abord suivre les directives ci-dessous pour vous assurer que votre intégration est conforme à nos standards de sécurité.
Si votre requête est toujours rejetée après l’application des directives ci-dessous, n’hésitez pas à ouvrir un ticket auprès de l’équipe de support HUB2.
1. Requête HTTP GET contenant un corps (Body)
- Les requêtes
GETne doivent PAS inclure de contenu dans le corps (Body). Toutes les requêtes non conformes seront rejetées par la passerelle de sécurité HUB2. - L’en-tête
Content-Lengthn’est pas obligatoire pour une requêteGET. Cependant, s’il est inclus, il doit être défini sur0et le corps de la requête (Body) doit rester complètement vide.
Mauvaise pratique
Mauvaise pratique
Remarquez les en-têtes Consultez la Bonne pratique ci-dessous pour corriger cela.
Content-Type et Content-Length envoyés, ainsi que la présence d’un corps (Body) non-vide pour une requête GET.De telles requêtes seront rejetées. Bonne pratique
Bonne pratique
Appliquez les recommandations suivantes pour éviter de déclencher la passerelle de sécurité :
- Supprimez entièrement le contenu du corps de la requête.
- Supprimez les en-têtes
Content-TypeetContent-Length(Content-Lengthest généralement calculé automatiquement par votre bibliothèque cliente HTTP, il n’y a donc généralement rien de plus à configurer).
2. Contenu JSON multi-ligne (non-stringified)
Toutes les requêtes HTTPPOST utilisant application/json doivent être linéarisées (stringified), c’est à dire formattées sur une seule ligne de texte. Les payloads JSON formattés sur plusieurs lignes seront rejetés par la passerelle de sécurité HUB2. La présence de retours à la ligne (CR/LF) ou d’espaces (sauf à l’intérieur des valeurs elles-mêmes) dans la chaîne JSON peut déclencher les règles de filtrage.
Par exemple :
Mauvaise pratique
Mauvaise pratique
Remarquez l’objet JSON sur plusieurs lignes dans le corps de la requête ci-dessous :Consultez la Bonne pratique ci-dessous pour corriger cela.
Bonne pratique
Bonne pratique
Pour éviter de déclencher la passerelle de sécurité, transformez le contenu multiligne en une seule ligne de texte, comme suit :
3. Le contenu du corps diffère de l’en-tête Content-Type
L’API HUB2 n’accepte actuellement que des payloads au format JSON. Si une requête HTTP est envoyée avec un contenu JSON valide, mais que l’en-tête Content-Type est défini sur une valeur différente (par exemple, text/plain, text/xml ou application/x-www-form-urlencoded), la passerelle de sécurité l’analysera de manière incorrecte et bloquera la requête.
Par exemple :
Mauvaise pratique
Mauvaise pratique
Remarquez l’en-tête Consultez la Bonne pratique ci-dessous pour corriger cela.
Content-Type incorrect par rapport au payload JSON :Bonne pratique
Bonne pratique
Définissez toujours l’en-tête
Content-Type de manière à correspondre au format du contenu du corps :