24 sept 2008

Sécuriser les appels Paybox, avec CURL

Développement 2 Commentaires


On a beau avoir une documentation de plus de 60 pages, on ne connait pas forcement les normes xHTML, ou la façon de sécuriser simplement un script ^^

Par défaut, la documentation de Paybox indique un simple formulaire HTML afin de transmettre les variables d’appels à la boutique.
Très rapidement, on voit que les variables sont donc tout à fait publiques, un simple copier/coller suffit à récupérer le formulaire et modifier les variables d’appels.

Afin de sécuriser le tout, nous allons utiliser CURL, afin de masquer l’emplacement du CGI, et masquer nos variables.
De cette manière le traitement entier de l’appel du CGI à la redirection se fera côté serveur, et non plus côté client.

/**
*	Paramètres Paybox
*/
$PBX_MODE = '1';
$PBX_LANGUE = 'FRA'; // FRA French
$PBX_SITE = '1999888';
$PBX_RANG = '99';
$PBX_IDENTIFIANT = '2';
$PBX_TOTAL = $_SESSION['total_a_payer'] * 100; // *100
$PBX_DEVISE = '978';
$PBX_CMD = str_pad( $_SESSION['command_number'], 12, "0", STR_PAD_LEFT );
$PBX_PORTEUR = $_SESSION['client_coords']['email'];
$PBX_RETOUR = "numauto:A;transac:T;id:R";
$PBX_EFFECTUE = 'http://www.maboutique.com/commande-ok.php';
$PBX_REFUSE = 'http://www.maboutique.com/commande-refuse.php';
$PBX_ANNULE = 'http://www.maboutique.com/commande-annule.php';
$PBX = "PBX_MODE=$PBX_MODE&PBX_LANGUE=$PBX_LANGUE&PBX_SITE=$PBX_SITE&PBX_RANG=$PBX_RANG&PBX_IDENTIFIANT=$PBX_IDENTIFIANT&PBX_TOTAL=$PBX_TOTAL&PBX_DEVISE=$PBX_DEVISE&PBX_CMD=$PBX_CMD&PBX_PORTEUR=$PBX_PORTEUR&PBX_EFFECTUE=$PBX_EFFECTUE&PBX_REFUSE=$PBX_REFUSE&PBX_ANNULE=$PBX_ANNULE&PBX_RETOUR=$PBX_RETOUR";
 
$MOD = "http://www.maboutique.com/cgi-bin/module-paybox.cgi";
 
$ch = curl_init();
 
curl_setopt( $ch, CURLOPT_URL, $MOD );
curl_setopt( $ch, CURLOPT_HEADER, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $PBX );
 
$data = curl_exec( $ch );
//echo $data; // DEBUG
 
curl_close( $ch );

C’est toujours mieux qu’un formulaire HTML lorsque l’on dispose de la librairie CURL. De plus il existe d’autres moyens toujours plus sécurisés que le simple formulaire.

Rappelons tout de même que Paybox propose des solutions de paiement en ligne très intéressante et faciles à mettre en place.

2 Responses to “Sécuriser les appels Paybox, avec CURL”

  1. Mathieu Delestre says:

    Testé et approuvé ^^

    Par contre j’ai modifié la séquence Curl pour éviter de récupérer et afficher les entêtes une fois la transaction effectué

    curl_setopt( $ch, CURLOPT_HEADER, 1 );

    devient :

    curl_setopt( $ch, CURLOPT_HEADER, 0 );

Leave a Reply