Bonjour à tous,

J'utilise depuis quelques semaines un fichier que j'inclus dans mes scripts qui doivent récupérer des données depuis les tableaux super globaux.

Ce bout de code me fait les htmlentities et initialise les variables en fonction du nom utilisé.
Cela m'évite l'étape fastidieuse de la récupération des variables une à une. Je gagne vraiment du temps.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
/* Filtre $_POST */
if ( !empty( $_POST ) ) {
	foreach( $_POST as $key => $data ) { //Parcours le tableau
		$data = trim( $data ); //Supprime les espaces
		$data = htmlentities( $data, ENT_QUOTES, 'UTF-8' ); //Remplace les caractères interprétables
		$key = htmlentities( $key, ENT_QUOTES, 'UTF-8' ); //Remplace les caractères interprétables
		${ $key } = $data;
		}
	}
 
/* Filtre $_GET */
if ( !empty( $_GET ) ) {
	foreach( $_GET as $key => $data ) { //Parcours le tableau
		$data = trim( $data ); //Supprime les espaces
		$data = htmlentities( $data, ENT_QUOTES, 'UTF-8' ); //Remplace les caractères interprétables
		$key = htmlentities( $key, ENT_QUOTES, 'UTF-8' ); //Remplace les caractères interprétables
		${ $key } = $data;
		}
	}
 
/* Filtre $_FILE */
if ( !empty( $_FILE ) ) {
	foreach( $_FILE as $key => $data ) { //Parcours le tableau $_POST
		$data = trim( $data ); //Supprime les espaces
		$data = htmlentities( $data, ENT_QUOTES, 'UTF-8' ); //Remplace les caractères interprétables
		$key = htmlentities( $key, ENT_QUOTES, 'UTF-8' ); //Remplace les caractères interprétables
		${ $key } = $data;
		}
	}
Jusqu'ici cela marche bien mais je me demandais si c'etait vraiment une bonne chose.
- Bien sur, il faut faire gaffe de ne pas utiliser des noms de variables qui peuvent être créé par ce script.
- Un attaquant pourrais surcharger les superglobal aussi (je ne sais pas si ce type d'attaque est courante)

Donc ma question est :
Est-ce que je continu à procéder comme ça ?
Ou est-ce que je me plante devrai arrêter ?