Formulaire caché

Signaler
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
12 août 2009
-
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
12 août 2009
-
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

Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
12 août 2009

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
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
74
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
26 mai 2011

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 !!
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
12 août 2009

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
Messages postés
74
Date d'inscription
jeudi 5 janvier 2006
Statut
Membre
Dernière intervention
26 mai 2011

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 !!
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
12 août 2009

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