Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre habitué

    Profil pro hugues dupont
    Pompier
    Inscrit en
    janvier 2010
    Messages
    368
    Détails du profil
    Informations personnelles :
    Nom : hugues dupont
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : janvier 2010
    Messages : 368
    Points : 125
    Points
    125

    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 :
    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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    20 703
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 20 703
    Points : 27 019
    Points
    27 019

    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.

  3. #3
    Membre habitué

    Profil pro hugues dupont
    Pompier
    Inscrit en
    janvier 2010
    Messages
    368
    Détails du profil
    Informations personnelles :
    Nom : hugues dupont
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : janvier 2010
    Messages : 368
    Points : 125
    Points
    125

    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 :
    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 :
      <?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 Vincent
    Inscrit en
    juillet 2005
    Messages
    20 703
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 20 703
    Points : 27 019
    Points
    27 019

    Par défaut

    Avec PDO il faut faire comme dans ton premier code : des arguments dans une requêtes préparées.

  5. #5
    Membre habitué

    Profil pro hugues dupont
    Pompier
    Inscrit en
    janvier 2010
    Messages
    368
    Détails du profil
    Informations personnelles :
    Nom : hugues dupont
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : janvier 2010
    Messages : 368
    Points : 125
    Points
    125

    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 hugues dupont
    Pompier
    Inscrit en
    janvier 2010
    Messages
    368
    Détails du profil
    Informations personnelles :
    Nom : hugues dupont
    Localisation : France

    Informations professionnelles :
    Activité : Pompier

    Informations forums :
    Inscription : janvier 2010
    Messages : 368
    Points : 125
    Points
    125

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •