IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Sécuriser les données du formulaire : validation du code


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut Sécuriser les données du formulaire : validation du code
    Bonjour,

    Je souhaiterais savoir si ce code est valable concernant les données entrées dans un formulaire et destinées à être stockées en bdd...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (get_magic_quotes_gpc()) {
    	$titre	= stripslashes(getPostParameters(titre));
    } else {
    	$titre 	= getPostParameters(titre);
    }
    $titre		= trim($titre);
    $titre		= htmlentities($titre);
    $titre		= mysql_real_escape_string($titre);
    ...ou si vous voyez des améliorations à y faire.

    Merci d'avance pour votre aide.

    PS : pas la peine de me renvoyer vers tel ou tel tuto sur le net, je viens de passer plus de 2h à lire tout ce qui me tombait sous la main ce code est une sorte de "compilation" de ce qui ressortait le plus souvent, mais d'un site à l'autre c'est différent (du bon et du moins bon pour les explications...) donc je ne sais pas si c'est correct, "trop" sécurisé, etc.

  2. #2
    Membre éclairé
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Par défaut
    Salut,

    Citation Envoyé par Jarodd Voir le message
    Bonjour,

    Je souhaiterais savoir si ce code est valable concernant les données entrées dans un formulaire et destinées à être stockées en bdd...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (get_magic_quotes_gpc()) {
        $titre    = stripslashes(getPostParameters(titre));
    } else {
        $titre     = getPostParameters(titre);
    }
    $titre        = trim($titre);
    $titre        = htmlentities($titre);
    $titre        = mysql_real_escape_string($titre);
    ...ou si vous voyez des améliorations à y faire.
    Ca dépends. De quels caractères peuvent être composer ta variable "titre" reçue en paramètres? Et que fait ta fonction "getPostParameters" ?

    J'ai plutot tendance à utiliser des regexp pour effectuer les tests complex, que les fonctions de bases de PHP, car un htmlentities, meme si il va te protéger ta page peu foutre le souc dans ton affichage.

    Donc, la première chose à faire est de se dire... Qu'est-ce que je veux autoriser comme caractères? Et a partir de la, tu mets une regex avec tes données exacte (soit uniquement un test, et tu retourn true/flase => à traiter, soit tu remplace par '' (<= rien) tout les caractères qui ne correspondent pas à ce que tu attends.

    Onet

  3. #3
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Salut,

    Merci pour le tuyau. Pour la fonction j'ai oublié de la copier, elle récupère la valeur postée si elle existe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function getPostParameters($str) {
    	$var = NULL;
    	if (isset($_POST[$str]))
    		$var = $_POST[$str];
    	if ($var == "")
    		$var = NULL;
    	return $var;
    }
    Concernant le type de caractères, il s'agit d'une sorte d'agenda, donc tous les caractères sont utilisés (l'utilisateur est libre de son formatage). Par exemple, les caractères < et > sont autorisés (s'il met une présentation du genre "-> date"). A partir de là je veux surtout éviter l'utilisation de failles ou l'injection de code, seulement comme je l'ai dit, d'un site à l'autre les conseils changent donc je préfère savoir si mon code est assez sûr en partant d'un cas général et pas forcément ce cas-là. Mais c'est vrai que les regexp sont un bon moyen, à moins de se tromper dans leur modèle...

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/01/2007, 15h34
  2. [Sécurité] sécuriser les données d'un site
    Par lodan dans le forum Langage
    Réponses: 10
    Dernier message: 20/07/2006, 12h26
  3. Réponses: 3
    Dernier message: 02/05/2006, 10h49
  4. Envoyer les données du formulaire directement par mail
    Par McAdam dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 09/04/2006, 01h51
  5. Réponses: 2
    Dernier message: 11/10/2005, 09h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo