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 :

PDO éviter les injections MYSQL et sécuriser tout


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2021
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2021
    Messages : 18
    Points : 9
    Points
    9
    Par défaut PDO éviter les injections MYSQL et sécuriser tout
    Bonjour,

    Je voulais savoir si mon code est protégé contre les injections MYSQL et autres attaques ?

    Et si ce n'est pas sécurisé quel est le moyen le plus rapide de le faire ?

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    <?php
    $id = "";
     
    $image = $file;
     
    $titre= htmlspecialchars($_POST["titre"]);
     
    $createur= htmlspecialchars($_POST["createur"]);
     
    $datecrea= htmlspecialchars($_POST["datecrea"]);
     
    $description= htmlspecialchars($_POST["description"]);
     
    $prix= htmlspecialchars($_POST["prix"]);
     
    $datepromo= htmlspecialchars($_POST["datepromo"]);
     
    $nbjeton= htmlspecialchars($_POST["nbjeton"]);
     
    $smartcontract= htmlspecialchars($_POST["smartcontract"]);
     
    $collection= htmlspecialchars($_POST['collection']);
     
    $echange= htmlspecialchars($_POST["echange"]);
     
    $echangedescription= htmlspecialchars($_POST["echangedescription"]);
     
    $royalties= htmlspecialchars($_POST["royalties"]);
     
    $instagram= htmlspecialchars($_POST["instagram"]);
     
    $twitter= htmlspecialchars($_POST["twitter"]);
     
    $tiktok= htmlspecialchars($_POST["tiktok"]);
     
    $urlopensea= htmlspecialchars($_POST["urlopensea"]);
      $ip = $_SERVER['REMOTE_ADDR'];
    $certif =0;
     
     
     
     
     
     
     
     
    $serveur = "localhost";
        $dbname = "nomdematable";
        $user = "pensesachangerici";
        $pass = "heureusementjaichangerici"; 
     
     
     
     
      try{
    $dbco = new PDO("mysql:host=$serveur;dbname=$dbname",$user,$pass);
            $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
            //On insère les données reçues
            $sth = $dbco->prepare("
                INSERT INTO nft(id, titre, description, image, createur, datecrea, datepromo, prix, nbjeton, smartcontract, collection, echangedescription, royalties, urlopensea, echange, instagram, twitter, tiktok, certif, ip)
                VALUES(:id, :titre, :description, :image, :createur, :datecrea, :datepromo, :prix, :nbjeton, :smartcontract, :collection, :echangedescription, :royalties, :urlopensea, :echange, :instagram, :twitter, :tiktok, :certif, :ip)");
    $sth->bindParam(':id',$id);
    $sth->bindParam(':titre',$titre);
    $sth->bindParam(':description',$description);
    $sth->bindParam(':image',$image);
    $sth->bindParam(':createur',$createur);
    $sth->bindParam(':datecrea',$datecrea);
    $sth->bindParam(':datepromo',$datepromo);
    $sth->bindParam(':prix',$prix);
    $sth->bindParam(':nbjeton',$nbjeton);
    $sth->bindParam(':smartcontract',$smartcontract);
    $sth->bindParam(':collection',$collection);
    $sth->bindParam(':echangedescription',$echangedescription);
    $sth->bindParam(':royalties',$royalties);
    $sth->bindParam(':urlopensea',$urlopensea);
    $sth->bindParam(':echange',$echange);
    $sth->bindParam(':instagram',$instagram);
    $sth->bindParam(':twitter',$twitter);
    $sth->bindParam(':tiktok',$tiktok);
    $sth->bindParam(':certif',$certif);
    $sth->bindParam(':ip',$ip);
     
            $sth->execute();
     
            //On renvoie l'utilisateur vers la page de remerciement
           // header("Location:form-merci.html");
        }
        catch(PDOException $e){
         //   echo 'Impossible de traiter les données. Erreur : '.$e->getMessage();
        }
     
     
     
    ?>

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 201
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 201
    Points : 8 426
    Points
    8 426
    Billets dans le blog
    17
    Par défaut
    Tu prépares ta requête et passes bien tous les arguments via $sth->bindParam() => C'est bon

    Tu pourrais simplifier le PDO en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $insert = $pdo->prepare($sql);
    $insert->execute([ // Les éléments du tableau sont automatiquement échappés
        ':id' => $_POST['id'],
        ':titre' => $_POST['titre'],
        ...
    ]);
    Attention, le htmlspecialchars() n'a pas sa place ici. Les données doivent être neutres en base.
    => Il se passe quoi si tu dois les sortir sur un CSV, un PDF ou un simple fichier TXT ? Tu te retrouverais avec des &quot; & cie hors de propos

    Réserve le htmlspecialchars() à l'affichage uniquement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2021
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2021
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    merci beaucoup seb

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

Discussions similaires

  1. [MySQL] Sécurisation du code pour éviter les injections SQL
    Par cfloriot dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/04/2016, 11h18
  2. [MySQL] Eviter les Injections mysql
    Par johnson95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/02/2010, 16h03
  3. PHP & MySQL : éviter les doublons dans la table.
    Par ghilan dans le forum Requêtes
    Réponses: 4
    Dernier message: 21/08/2009, 01h57
  4. Réponses: 3
    Dernier message: 04/05/2009, 08h28
  5. Quelle fonction mysql ? pour éviter les carambolages
    Par Dendrite dans le forum Débuter
    Réponses: 4
    Dernier message: 08/03/2009, 18h22

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