Page 1 sur 1

Sécuriser une query string ?

Posté : 14 janv. 2010, 01:59
par Invité
Hello tout le monde,

J'aimerai savoir ce que vous pensez de cette technique :
function protegeQueryString($array){
    $donnee = "";
    $retour = array();
    
    //Chaque parametre et valeur sont placés dans un tableau
    foreach($array as $k => $v){
        $donnee .= $k.$v;
        $retour[] = urlencode($k)."=".urlencode($v);
    }
    
    //ajout d'un dernier parametre pour authentifier l'url
    $crypt = md5($donnee);
    $retour[] = "sec=".$crypt;
    
    return join("&",$retour);
}
Bonne journée à vous.

Niuxe

Re: Sécuriser une query string ?

Posté : 14 janv. 2010, 15:46
par stealth35
tu pourrais utiliser
http_build_query

http://php.net/manual/en/function.http-build-query.php

Re: Sécuriser une query string ?

Posté : 15 janv. 2010, 19:17
par niuxe
Hello Stealth35,

Je ne connaissais pas du tout cette fonction et je t'en remercie. Mais mon pseudo soucis concerne le hashage. Est ce une bonne chose ou pas ? À priori, je dirai que c'est pas mal, à postériori il se peut que ce ne soit pas une bonne idée. longueur de la chaine < 255. Je soumets ce script afin de savoir ce que vous en pensez.

Bonne soirée.

Re: Sécuriser une query string ?

Posté : 15 janv. 2010, 19:47
par zeus
le soucis avec md5(), c'est que c'est du hashage (!= cryptage) et que tu ne pourras plus jamais obtenir l'inverse de ce que tu as hashé.
De plus, après un md5(), si c'est pour une url, un petit coup de base64_encode() permettrait d'éviter les caractères interdits dans les urls.

Re: Sécuriser une query string ?

Posté : 16 janv. 2010, 17:13
par patbator
Hello,

J'en comprend que tu veux faire un checksum des paramètres get pour t'assurer qu'ils n'ont pas été manipulés par l'internaute.

Ce peut être efficace mais cependant, si tu fais apparaître le checksum dans l'url tu donnes des indices aux éventuels manipulateurs :
1 - ils voyent qu'il y a une somme de controle
2 - les algos de sommes de contrôle sont assez facilement reconnaissables ou simplement en essayant les méthodes possibles en php, on peut les deviner

Je dirais donc que l'idée est bonne mais que ton utilisation en est trop légère pour être efficace.
Utilise soit des combinaisons de hashage pour complexifier la génération de la somme de contrôle ou utilise du cryptage avec clé que toi seul peut connaître.
Si tu utilisse du cryptage avec clé, la question sera de protéger la clé ;)

@+

Re: Sécuriser une query string ?

Posté : 18 janv. 2010, 10:14
par niuxe
Hello,
le soucis avec md5(), c'est que c'est du hashage (!= cryptage) et que tu ne pourras plus jamais obtenir l'inverse de ce que tu as hashé.
De plus, après un md5(), si c'est pour une url, un petit coup de base64_encode() permettrait d'éviter les caractères interdits dans les urls.
Je n'ai pas fait la relation avec le base64_encode et une querie string. Surtout que c'est logique. Bien que ce n'est pas ce que je recherche comme réponse à la base, je prend note de ta réponse car j'aurais peut être l'utiliser. Merci ^^
[...]
J'en comprend que tu veux faire un checksum des paramètres get pour t'assurer qu'ils n'ont pas été manipulés par l'internaute.
[...]
Exact.
Ce peut être efficace mais cependant, si tu fais apparaître le checksum dans l'url tu donnes des indices aux éventuels manipulateurs :
1 - ils voyent qu'il y a une somme de controle
2 - les algos de sommes de contrôle sont assez facilement reconnaissables ou simplement en essayant les méthodes possibles en php, on peut les deviner

Je dirais donc que l'idée est bonne mais que ton utilisation en est trop légère pour être efficace.
Utilise soit des combinaisons de hashage pour complexifier la génération de la somme de contrôle ou utilise du cryptage avec clé que toi seul peut connaître.
Si tu utilisse du cryptage avec clé, la question sera de protéger la clé ;)

@+
Si j'ajoute un peu de sel (implémenter un système) et que je change ma fonction de hashage en sha1, est ce qu'à ton avis la sécurité sera meilleur ?

Re: Sécuriser une query string ?

Posté : 18 janv. 2010, 15:06
par stealth35
t'as d'autre type de hash sous php , blowfish par exemple qui comporte un salt en plus

Re: Sécuriser une query string ?

Posté : 18 janv. 2010, 23:21
par ooflorent
t'as d'autre type de hash sous php , blowfish par exemple qui comporte un salt en plus
Blowfish c'est pas du hashage :lol:

Concernant la sécurisation d'une query string je ne vois pas du tout l'intérêt ! Si ton application est bien conçue, tu contrôles tes entrées, tu n'as donc pas besoin de cryptage et/ou de hashage pour sécuriser tes données... Utilise des filtres et des validateurs sur les valeurs que tu lis et ça suffit.

Au passage, l'utilisation d'un cryptage sur tes query strings va réduire drastiquement tes performances. Quant à l'utilisation d'un hashage, bof, je ne vois pas bien l'intérêt. Quite à contrôler le hash, autant contrôler les données.

Si tu veux un cryptage simple (en fait il s'agit plutôt d'une obfuscation) tu peux effectuer un rot128 (à ne pas confondre avec un rot13) sur query string puis un encodage en base 64 (en n'oubliant pas de retirer les == s'ils sont présents) suivi d'un strrev. Je peux t'assurer que là, si tu ne divulges pas ton algo, très peu de gens vont comprendre de quoi il s'agit ! L'avantage de cette méthode (même si je te conseillerais plutôt de filtrer tes données) est qu'elle est peu couteuse en ressources et facile à mettre en place.

Re: Sécuriser une query string ?

Posté : 19 janv. 2010, 11:25
par stealth35
Blowfish c'est pas du hashage :lol:
oui, je me suis mélange les pinceaux #-o