#1 Le 07/04/2009, à 16:19
- Lmartin76
[résolu] PHP - Sécurisation des variables $_GET et $_POST
Bonjour,
Je me documente actuellement sur la façon la plus propre de sécuriser une page php. Comme il y a pas mal de chose sur le sujet j'ai fait une compilation pour arriver à la solution suivante (c'est du php 5):
code de la page
require_once( 'api.php' );
//Securisation variables passées par URL
$_GET = secureData($_GET);
//Sécurisation variables issues du formulaire
$_POST = secureData($_POST);
// reste du code
La fonction secureData() se trouve dans api.php
function secureData($f_data) {
$f_data = array_map('mysql_real_escape_string', $f_data);
$f_data = array_map('strip_tags', $f_data);
$f_data = array_map('htmlspecialchars', $f_data);
return $f_data;
}
Si il y a des spécialistes Php qui trainent sur le fofo, auraient ils l'amabilité de me dire si ça tient la route et éventuellement de corriger ce qui cloche ?
Merci.
Dernière modification par Lmartin76 (Le 08/04/2009, à 10:10)
Planète bouillue, planète foutue.
Hors ligne
#2 Le 07/04/2009, à 18:46
- Peck
Re : [résolu] PHP - Sécurisation des variables $_GET et $_POST
Attention, c'est bien joli, mais tu ne sais pas à l'avance quel sera l'usage de tes données.
Si c'est pour remettre dans un formulaire alors qu'il y a un ' dedans il sera échapé alors qu'il ne devrais pas.
Si c'est pour mettre dans une base de données alors qu'il y a un < normal dans le texte, il sera échappé alors qu'il ne devrais pas ...
C'est pour ça que tu es sensé faire cette sécurisation au cas par cas en fonction de l'usage de chaque variable.
Hors ligne
#3 Le 08/04/2009, à 08:11
- Lmartin76
Re : [résolu] PHP - Sécurisation des variables $_GET et $_POST
Merci pour ta réponse Peck. Je me rend compte que je vais effectivement être obligé de traiter au cas par car et séparer variables numériques et alpha.
Pour ce qui est du format numérique, peut on se contenter de passer par un intval() ou floatval() ?
Dans le cas d'une variable de type string est-ce que htmlspecialchars() suffit à se prémunir d'une injection de code JS ?
Planète bouillue, planète foutue.
Hors ligne
#4 Le 08/04/2009, à 09:03
- Peck
Re : [résolu] PHP - Sécurisation des variables $_GET et $_POST
L'usage ce n'est pas numérique ou alpha, c'est sql ou html ou scripting ou ...
Une string protégée avec htmlspecialchar te protège contre l'injection dans du html, mais pas si la variable sert dans des paramètres de balise ou dans des chaines javascript. Il faut vraiment faire au cas par cas quitte à avoir une fonction qui gère tes n différents cas à laquelle tu fais appel à chaque fois que tu lis une variable d'entrée.
Hors ligne
#5 Le 08/04/2009, à 10:09
- Lmartin76
Re : [résolu] PHP - Sécurisation des variables $_GET et $_POST
Ok en relisant ton premier post je viens de comprendre. Bon bah y'a du boulot. Je te remercie Peck.
A+.
Planète bouillue, planète foutue.
Hors ligne