Stripcslashes supprime trop d'antislashes

Résolu
Piven Messages postés 90 Statut Membre -  
Piven Messages postés 90 Statut Membre -
Bonjour, Voila mon problème, pour des raisons de sécurité, je suis amener à crypter des données. Seulement, ces données, une fois cryptées, peuvent contenir des guillemets (simple ou double). Je suis donc obligé de faire un addslashes avant de les enregistrer. Et donc un stripcslashes pour les récupérer. Seulement stripcslashes() supprime aussi des \ contenu dans les données. Et donc, une fois décryptées, ces données sont fausses.

exemple:
donnée crypté : 1azd^sd\Efsd
retour après stripcslashes : 1azd^sdEfsd.


A voir également:

6 réponses

HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Tu peux toujours retirer toute forme de \ ou de / dans ta chaîne.

0
Piven Messages postés 90 Statut Membre 3
 
Ce n'est pas dans la chaine qu'il y en a , mais dans la chaine cryptée, donc si je les vire, une fois décryptées, les données ne seront pas identique à celle rentrées au départ.
0
HostOfSeraphim Messages postés 7340 Statut Contributeur 1 608
 
Mais si tu les vire de ta chaîne cryptée, et d'une chaîne à décrypter, ça ne devrait pas poser de problème ?
0
Piven Messages postés 90 Statut Membre 3
 
Non non, ça change tout. Par exemple : SÜ0/00€¡*à÷«\ÍæH?Y×?È...ÊztáP Donne 33333333333 alors que sans le \ : %÷/¸ á+¸d)[¼,è$$í3Fzç¸ÓWXyz
0
Piven Messages postés 90 Statut Membre 3
 
Au passage, il s'agit bien sûr de programmation en PHP.
0
Piven Messages postés 90 Statut Membre 3
 
Après une petite enquête, il semblerait que MySQL supprime automatiquement un \ quand il en rencontre deux. Ce qui fait que stripcslashes, lui supprime le dernier. Seulement ce n'est pas le cas avec les \' ou \". Donc je ne sais pas trop quoi faire... Certaines valeurs bug avec stripcslashes et d'autres sans...
0

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

Posez votre question
Leviathan49 Messages postés 267 Statut Membre 70
 
C'est étrange...
Chez moi stripcslashes ne supprime pas de \ en trop.
$str ="dsfd \\g'fdfg^\\g\\\\f'dg'f\n";
echo $str;
$str = addslashes($str);
echo $str;
echo stripcslashes($str);
Tu es sur de ne pas avoir déjà une chaine correcte avant de faire ton stripcslashes ?
0
Piven Messages postés 90 Statut Membre 3
 
A vrais dire, comme je le disais juste au dessus je crois que ça vient de MySQL. Par exemple, une cheminement complet :
Données cryptées: ¡*à÷«\ÍæH?Y×?È...Ê
addslashes+envoie mysql : ¡*à÷«\\ÍæH?Y×?È...Ê
récupération des données : ¡*à÷«\ÍæH?Y×?È...Ê
stripcslashes : ¡*à÷«ÍæH?Y×?È...Ê
0
Piven Messages postés 90 Statut Membre 3
 
Comme de toutes évidence, MySQL effectue un stripcslashes avant de renvoyer des données, j'ai donc stoppé le stripcslashes de ces données, sans oublier de l'effectuer tout de même sur les données provenant de fichiers sur le serveur (Hé oui, sécurité oblige, les données sont éparpiller un peu partout !).
Merci pour ceux qui ont essayé de m'aider, mais ça a l'aire à peu près stable pour le moment.
0