8791 sujets

Développement web côté serveur, CMS

Bonjour aujourd’hui quelqu’un m'a posé une question concernant la sécurité au niveau des URL et plus particulièrement les variables GET contenu dedans.
J'ai pour habitude de les traités avec un switch et dans le cas default de retourner une erreur.
Doit-on en faire davantage ?
Modifié par Su4p (04 Jul 2011 - 10:51)
Ça va surtout dépendre de l'usage que tu vas faire ce la variable en question.

Si elle est est affichée dans la page alors il faudra la traiter avec htmlentities() pour se protéger des attaques XSS.

Si elle est utilisée dans une requête il faut la traiter avec mysql_real_escape_string() (ou équivalent de PDO ou d'un éventuel ORM).

Après suivant l'usage il peut être utile tester la valeur et d'effectuer une redirection ou un message d'erreur si la variable n'est pas correcte.
C'est sûr pour mysql_real_escape_string() et htmlentities() mais la plupart du temps mes variables GET sont utilisés dans mes scripts pour page ou ecran elles servent à choisir le bon fichier php donc mon utilisation est "secure" ?
Modérateur
Salut,

De mon côté j'utilise/ais une petite technique qui permet/tait de sécuriser le get en plus du real_mysql_escape_string :

* récupérer sous forme d'une string les paramètres et leurs valeurs.
* faire un sha1 de cette string
* insérer dans l'url un nom de paramètre arbitraire avec comme valeur le la string du sha1
* Au controle, verifier l'intégrité de tes données

pourquoi sha1 et non pas le md5. Bin le md5, c'est tout simplement de la merde.
Modifié par niuxe (01 Jul 2011 - 20:36)
Su4p a écrit :
la plupart du temps mes variables GET sont utilisés dans mes scripts pour page ou ecran elles servent à choisir le bon fichier php donc mon utilisation est "secure" ?


En voyant ton code ça serait plus simple. Smiley smile
Ceci est à titre d'exemple ma question est générale et si elle paraît stupide je m'en excuse d'avance à vrai dire je n'ai jamais eu l'occasion de suivre une formation concernant la sécurité.
Voici un exemple de code que je pourrais utiliser dans une de mes applications :

switch($_GET['page']){
	case 'accueil' :
		include_once 'accueil.php';
		break;
	case 'visite1':
		include_once 'formulaire/visite1.php';
		break;
	default :
		header("HTTP/1.0 404 Not Found");
		break;
}

La question est dois-je faire subir à $_GET['page'] un traitement particulier ?

niuxe : Certes ta méthode m'a l'air on ne peut plus efficace cependant je trouve ceci bien lourd. Mais merci c'est une idée plutôt intéressante.
Modifié par Su4p (01 Jul 2011 - 22:20)
Su4p a écrit :

La question est dois-je faire subir à $_GET['page'] un traitement particulier ?


Non pas besoin.