Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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