Formulaire caché

cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009 - 15 juil. 2009 à 14:56
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009 - 22 juil. 2009 à 11:54
Bonjour,

J'ai réalisé un site sur lequel j'utilise des formulaires cachés
<Form action....>

</Form>

Tout fonction parfaitement sauf que je passe des données confidentielles et que je ne veux pas que l'on puisse visualiser la source ... y a-t-il une possibilité pour cela ?

Merci d'avoir lu la question ... même si vous n'avez pas la solution

thierry la fronde

7 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 juil. 2009 à 19:14
Salut,

Empêcher l'affichage de la source est impossible, mais il reste la possibilité d'encoder les données pour qu'elles ne soient pas lisibles.
... je m'interroge cependant sur la nécessité de passer par des formulaires/hidden pour transférer des données.
Pourquoi ne pas utiliser les sessions ?


Cordialement,


Kohntark -
0
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
15 juil. 2009 à 20:44
En fait le formulaire est destiné à paypal et contient mon jeton d'identité et d'autres info du même type. De plus les données ne sont pas destinée directement à ma page suivante puisque c'est paypal qui s'y connecte automatiquement (en gros : entre ma page d'appel et ma page d'arrivée je passe par le site de paypal). J'en ai besoin malgré tout.
Je veux en effet que mes données ne soient pas lisibles. La solution semble donc l'encodage... mais comment qu'on fait?

thierry la fronde
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 juil. 2009 à 22:00
Je vois ... mais je ne vais pas pouvoir te répondre, je n'ai jamais utilisé paypal.
"puisque c'est paypal qui s'y connecte automatiquement"
=> c'est plutôt l'utilisateur qui envoie le formulaire vers PayPal, non ?
Sans prendre trop de risques je pense :
- que l'encodage est une mauvaise solution dans ton cas (impossible à déchiffrer par paypal)
- que, si tu respectes la procédure normale, tu peux faire confiance à la sécurité mise en place par paypal et donc que ces données non pas besoin d'être plus protégées

... mais attendons un avis plus averti que le mien.

Pour répondre tout de même sur l'encodage n'importe quelle solution perso peut convenir. Tu peux jouer par exemple avec les encodages DEC, HEX, mélanger les lettres, appliquer un offset sur leur position dans la chaîne, etc ... il y a des millions de possibilités qui bien souvent sont "indéchiffrables" Bien sur s'il s'agit de données ultra confidentielles il faudra se diriger vers d'autres solutions (SSL, ...)


Cordialement,

Kohntark -
0
romain14g59 Messages postés 74 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 26 mai 2011
20 juil. 2009 à 23:05
Salut utilises-tu un retour par IPN pour validé le virement effectué par paypal? pour tes champs il suffit de les crypter avec cette petite fonction ci-dessous et de les faire passer dans une variable libre que Paypal à prévus:

<?php
$Cle = "686g3edZPk5y8inB1i3tr4d";
function crypter($maCleDeCryptage="", $maChaineACrypter){
if($maCleDeCryptage==""){
$maCleDeCryptage=$GLOBALS['PHPSESSID'];
}
$maCleDeCryptage = md5($maCleDeCryptage);
$letter = -1;
$newpass = '';
$strlen = strlen($maChaineACrypter);
for($i = 0; $i < $strlen; $i++ ){
$letter++;
if ( $letter > 31 ){
$letter = 0;
}
$neword = ord($maChaineACrypter{$i}) + ord($maCleDeCryptage{$letter});
if ( $neword > 255 ){
$neword -= 256;
}
$newstr .= chr($neword);
}
return base64_encode($newstr);
}

function decrypter($maCleDeCryptage="", $maChaineCrypter){
if($maCleDeCryptage==""){
$maCleDeCryptage=$GLOBALS['PHPSESSID'];
}
$maCleDeCryptage = md5($maCleDeCryptage);
$letter = -1;
$newstr = '';
$maChaineCrypter = base64_decode($maChaineCrypter);
$strlen = strlen($maChaineCrypter);
for ( $i = 0; $i < $strlen; $i++ ){
$letter++;
if ( $letter > 31 ){
$letter = 0;
}
$neword = ord($maChaineCrypter{$i}) - ord($maCleDeCryptage{$letter});
if ( $neword < 1 ){
$neword += 256;
}
$newstr .= chr($neword);
}
return $newstr;
}
?>


Voilà quelques petits exemples d'utilisation !!

$var1=crypter($maCleDeCryptage, "www.phpcs.com"); // $var1 retourne "www.phpcs.com" crypter
$var2=decrypter($maCleDeCryptage, $var1); // $var2 retourne "www.phpcs.com" en clair


Voilà le hidden prévu par Paypal:




Pour finir, si tu veux faire passer plusieurs variables dans cette hidden, je te conseille d'utiliser un implode => http://fr3.php.net/manual/fr/function.implode.php que tu vas ensuite crypter puis pour récupérer tes variables tu décryptes la chaine crypter et tu la passes dans un explode => http://fr3.php.net/manual/fr/function.explode.php un peu dur à comprendre pas grave un petit exemple pour la route:

<?php
$carte="452178213695"; //Par exemple un numéro de carte bancaire
$array = array('lastname', 'email', $carte); //tu peut aussi les insérer directement dans un array

$comma_separated = implode(",", $array); // ce qui donne lastname,email,452178213695

$chaine_crypter=crypter($maCleDeCryptage, $comma_separated); // voilà c'est crypter ca donne un truc du genre 2A54de1f51tgyhjADrr

$chaine_decrypter=decrypter($maCleDeCryptage, $chaine_crypter); // on decrypte la chaine 

$var = explode(",", $chaine_decrypter);
echo $var[0]; // lastname
echo $var[1]; // email
echo $var[2]; // 452178213695

?>


Bon je reste à ta disposition j'ai beaucoup travaillé avec Paypal donc pas de problème !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
21 juil. 2009 à 16:55
Bonjour,

Tout d'abord merci à vous deux.

Pour répondre à Kohntark : non c'est bien paypal qui envoie les infos dans un fichier dit d'écoute (en fait c'est un code php avec fsockopen que j'exécute) et ce fichier communique avec le serveur de paypal de manière transparente.

Romain14g59 :
Je vais tester ton code mais ce n'est pas la variable custom que je souhaite crypter mais tout le formulaire...

un truc du genre :

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">


" >


</form>

//paypal_button est le code qu'on trouve sur http://www.informatique-rodez.fr/cryptage-dynamique-en-php-des-boutons-paypal/

J'ai regardé du côté d'openssl mais je suis sur un serveur mutualisé est en safe-mode donc impossible de lire mes fichiers clé publiques et privés... ni même d'exécuter une commande pour openssl. Les codes que j'ai pu trouver ne fonctionnent donc pas..



thierry la fronde
0
romain14g59 Messages postés 74 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 26 mai 2011
22 juil. 2009 à 00:02
Bonjour pour crypter tout le formulaire c'est impossible et pourquoi tu utilises un bouton? Utilise plutôt un formulaire d'envoie avec le prix à payer !!

<form id="paypal" name="paypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">


//Prix a payer















</form>
Avec cette méthode il n'y a aucune information risquer sauf le custom, mais tu peux le crypter !! tu peux rajouter d'autres champs il faut aller voir sur leurs documentations, mais là tu as juste à indiquer ton adresse Paypal pour le virement !!
0
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
22 juil. 2009 à 11:54
C'est la méthode que j'utilise pour le moment, mais rien n'empêche un fraudeur de modifier le prix en tapant directement la requête dans la barre d'adresse...

Je vais contourner le problème en comparant toutes les valeurs reçues dans IPN puis le PDT, avec une base de données de mes articles... Cette base est superflue pour mon activité mais bon.. qu'en sera-t-il demain?
Ou bien faire comme toi, si je comprends bien tu cryptes la variable custom et je suppose que tu vérifie ensuite l'intégrité des informations sur son contenu... d'où son cryptage.. c'est bien cela?


thierry la fronde
0
Rejoignez-nous