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

Langage PHP Discussion :

formulaire validation et PDO VS htmlentities


Sujet :

Langage PHP

  1. #1
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut formulaire validation et PDO VS htmlentities
    bonjour à vous et meilleurs voeux.

    je vous soumet le code pour valider les données d'un formulaire avant application d'une requete sql.

    est-ce que l'utilisation de la fonction mysql_real_escape_string() et correcte et judicieusement utilisée?

    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
    <?php
    include("check.php");
     
    $input=$_POST['info'];
    if(ctype_digit($input)){
    	echo "information valide";
    	$a= mysql_real_escape_string($input);
    	echo $a;
    }else{
    	echo "information non valide";
    }
    $input_date=$_POST['date'];
    list($jour, $mois, $annee) = explode('/', $input_date);
    if(checkdate($mois,$jour,$annee))
    {
      echo "date valide";
      $b= mysql_real_escape_string($input_date);
    	echo $b;
    }
    else
    {
      echo "date non valide";
    }
    ?>
    Sachant que la requete est utilisée en mode PDO du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $check_credentials_query = $mysql->prepare("SELECT * FROM users WHERE user_name=:username AND user_password=:password");
    $check_credentials = $check_credentials_query->execute(array('password' => $password, 'username' => $username));
    Concernant la requete doit-elle être dans la même page que le contrôle ou doit-elle être sur une autre page.php?

    Est-ce que la combinaison de mon formulaire de validation des données et l'utilisation PDO pour les requêtes propose un niveau de sécurité optimale.
    Est-ce que ça remplace les htmlentities? (pas certain de l'orthographe)

    Le fichier "check.php" contrôle s'il y a un token créé lors du loging et que la connection à la bdd se fait via le fichier config.php appelé par check.php

    merci d'avance pour votre info.

    Question2: idiote je suppose, pour votre formulaire de loging, utilisez-vous aussi le controle de donnée; avant d'utiliser la requête?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    mysql_real_escape_string() n'a rien à faire dans du PDO.

    pour htmlentities(), cela concerne l'affichage de données dans du code HTML, il est donc toujours nécessaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut
    j'ai lu différents forums sur le sujet et voilà une réponse récapitulative êtes vous d'accord avec ça si c'est oui, mon code a l'air correct?


    1/ Lors de l'insertion dans la BD, si on s'attend à une string ou du texte, pour se prémunir des attaques SQL on utilise:
    Code : PHP -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1.<?php mysql_real_escape_string(); ?>
    si tu attends une valeur numérique:

    Code : PHP - Tu seras donc protégé des attaques qui menaces la BD.


    ------------------------------
    2/ Lors de l'affichage, et seulement à ce moment on utilise 2 fonctions:
    Code : PHP -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <?php htmlspecialchars(); ?>
    et si tu veux avoir les sauts de ligne xHTML, tu prends:
    Code : PHP -
    dans le cas que tu ne l'envoies pas dans un textarea, car il prendra le \n en compte.

    J'y perds mon latin, avec les entrées et les sorties.
    concernant la validation des variables suis-je dans les clous,
    IMPORTANT est-ce que la requête est dans le même formulaire où dans un autre???

    après pour éviter l'injection sql est-ce que quelqu'un peut mettre un exemple de son code dit idéal.
    On verra plus tard pour l'affichage.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Avec PDO il faut faire comme dans ton premier code : des arguments dans une requêtes préparées.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut
    ok mais est-ce que cette méthode de PDO me préserve des injections sql (a priori oui selon l'ouvrage que j'ai)?

    Si c'est non
    comment m'en prémunir?

    en fait il y a tellement de trucs entre special quote, htmlentities,.... je ne sais pas qui protège de quoi et qu'elle code faire.
    s'il faut mettre toutes les fonctions bout à bout c'est pas simple.
    De tout façon si on veut péter une base on la pétera toujours?

    Comment tu procèdes toi?

  6. #6
    Membre habitué

    Profil pro
    Pompier
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 171
    Points
    171
    Par défaut
    bon je viens de trouver un forum qui repond un peu à ma recherche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. plusieurs formulaire valider et prob $_POST
    Par BigBarbare dans le forum Langage
    Réponses: 7
    Dernier message: 07/04/2006, 12h09
  2. modification formulaire + validation date
    Par cari dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/01/2006, 09h43
  3. Touche entrée sur double formulaire -> validation
    Par 10-nice dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/10/2005, 12h02
  4. Réponses: 7
    Dernier message: 16/03/2005, 12h35
  5. Controle de formulaire valid XHTML 1.1
    Par StagiaireEnGalère dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/10/2004, 22h15

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