# PayPal IPN et pare-feu : sécuriser un point d’entrée souvent trop ouvert

> Un audit d'hébergement découvre un point de notification de paiement laissé grand ouvert depuis des années. Restreindre l'accès sans casser les notifications légitimes.

- Auteur : WordPress Développement
- Publié le : 2024-03-10
- Mis à jour le : 2024-03-10
- Catégorie : Hébergement &amp; serveurs
- URL : https://www.wpmoderne.fr/hebergement/paypal-ipn-pare-feu-securiser-point-entree/

## L’essentiel

- L'URL IPN est souvent restée ouverte à toute IP depuis sa création
- La vérification par requête retour reste indispensable
- Restreindre par IP ne remplace pas la vérification applicative

Un audit d'hébergement systématique révèle régulièrement le même constat sur des sites e-commerce anciens utilisant PayPal comme moyen de paiement : l'URL de notification instantanée de paiement (IPN, Instant Payment Notification) reste accessible depuis n'importe quelle adresse IP, sans restriction, alors qu'elle n'a de raison légitime d'être appelée que par les serveurs de PayPal eux-mêmes.

## Ce que fait l'IPN et pourquoi il reste ouvert

Le mécanisme IPN fonctionne de manière proche du webhook Stripe : après un paiement, les serveurs de PayPal envoient une requête `POST` vers une URL définie sur le site marchand, qui met à jour le statut de la commande. Cette URL doit rester accessible publiquement puisque PayPal l'appelle depuis l'extérieur, ce qui explique pourquoi elle n'est presque jamais protégée par une authentification classique.

Le problème survient quand cette accessibilité publique n'est assortie d'aucune restriction par plage d'IP ni d'aucune vérification robuste de l'origine réelle de la requête, ce qui ouvre la porte à des notifications de paiement falsifiées, simulant une transaction jamais réellement effectuée.

> L'essentiel à retenir : L'URL IPN est souvent restée ouverte à toute IP depuis sa création ; La vérification par requête retour reste indispensable ; Restreindre par IP ne remplace pas la vérification applicative

## Restreindre l'accès par plage IP

PayPal ne publie pas une liste d'IP fixe aussi simplement que Stripe, mais recommande officiellement de valider chaque notification par une requête retour vers ses propres serveurs plutôt que de se fier uniquement à une restriction réseau. Cette restriction réseau reste néanmoins une couche de défense supplémentaire utile, à condition de ne jamais s'y substituer entièrement :

```
# Blocage par défaut, ouverture ciblée sur l'URL IPN uniquement
location /wc-api/wc_paypal_ipn {
    allow 173.0.81.0/24;
    allow 66.211.170.0/24;
    deny all;
}
```

### La vérification applicative, indispensable

La méthode recommandée par PayPal consiste à renvoyer la notification reçue vers ses serveurs, avec un paramètre supplémentaire (`cmd=_notify-validate`), et à ne traiter la commande que si la réponse confirme `VERIFIED`. WooCommerce implémente cette vérification nativement dans son extension PayPal, mais des intégrations maison anciennes s'en dispensent parfois pour simplifier le code, ce qui laisse la porte ouverte à une falsification.

- Vérifier que l'extension de paiement utilisée effectue bien la validation par requête retour
- Ajouter une restriction par plage IP en couche supplémentaire, jamais en remplacement
- Journaliser chaque notification IPN reçue, même rejetée, pour faciliter un futur audit

## Méthode d'audit à reproduire

1. Repérer l'URL IPN utilisée par le site (généralement documentée dans la configuration de l'extension de paiement)
2. Vérifier son accessibilité depuis une IP quelconque, hors des plages officielles PayPal
3. Confirmer que la vérification applicative `_notify-validate` est bien implémentée dans le code
4. Ajouter la restriction réseau une fois la vérification applicative confirmée fonctionnelle

> Un point d'entrée de paiement laissé ouvert n'est presque jamais une négligence volontaire : c'est un réglage fait au lancement du site, jamais revisité depuis, faute d'audit périodique programmé.

### Étendre l'audit aux autres points de notification

Un audit d'hébergement centré sur PayPal révèle souvent des points d'entrée similaires laissés ouverts pour d'autres services de paiement ou de notification tiers (Mollie, Lemonway, ou des passerelles bancaires spécifiques). La même méthode d'audit — repérer l'URL, vérifier la restriction réseau, confirmer la validation applicative — s'applique à chacun de ces points, l'un après l'autre, sans supposer qu'un seul audit couvre l'ensemble du site.

- Recenser l'ensemble des URL de callback utilisées par les moyens de paiement actifs sur le site
- Vérifier chaque point d'entrée individuellement, sans généraliser une conclusion d'un service à un autre
- Documenter la liste des IP autorisées par service, pour faciliter une future mise à jour

## En résumé

Un point de notification PayPal grand ouvert depuis des années n'est pas rare, et se corrige sans casser les notifications légitimes : une restriction par plage IP en couche réseau, combinée à la vérification applicative par requête retour déjà recommandée par PayPal, ferme la faille sans risque pour le fonctionnement normal des paiements. Un audit complet gagne à couvrir l'ensemble des moyens de paiement actifs, pas seulement celui qui a déclenché la vérification initiale.
