Visualizzazione dei risultati da 1 a 7 su 7

Discussione: PDO e sql injection

  1. #1

    PDO e sql injection

    Ciao a tutti, sto iniziando ad utilizzare PDO come collegamento al mio database MySql

    Leggendo in giro, ma posso sicuramente sbagliare, mi sembra di aver capito che utilizzando il prepare, sono "salvo" da sql injection ??!?

    Ho capito male ?!!
    Cioè.. posso "non trattare" il tipo di dato che mi viene passato via POST (ad esempio..) ??

    codice:
    
    <?php
    //esempio tanto per...
    
    $descrizione = $_POST['descrizione'];
    $userID = $_POST['userID'];
    
    $db = new database();
    $sql = "INSERT INTO tabella (descrizione,userID) VALUES (:descrizione,:userID)";$db->query($sql);
    $db->bind(':descrizione', $descrizione, PDO::PARAM_STR);
    $db->bind(':userIDins', $userID, PDO::PARAM_INT);
    $db->execute();
    ?>
    Grazie a tutti per i chiarimenti !!
    aquatimer2000

  2. #2
    uppino
    aquatimer2000

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    In linea di massima sì, ma il controllo è sempre bene farlo, anche per verificare che il dato in arrivo sia effettivamente corrispondente a ciò che ti aspetti.
    Esempio banale: chiedi all'utente di inserire un numero compreso tra 0 e 10, anche se il bind di PDO ti mette al sicuro da SQL injection, se non controlli niente l'utente potrebbe inviare 57, secondo il bind di PDO è tutto ok, ma il dato è completamente sballato. Verificando che l'input sia effettivamente compreso tra 0 e 10 stai implicitamente anche validandone il tipo.

    In parole povere, di dritto o di traverso, la validazione comunque devi farla anche lato PHP.

    Inoltre se non controlli il dato lato PHP ed arrivato alla query il bind fallisce, ti becchi un errore ed un crash dello script se non lo gestisci, validando i dati con PHP ti ripari da questa evenienza.

  4. #4
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    In linea di massima sì, ma il controllo è sempre bene farlo, anche per verificare che il dato in arrivo sia effettivamente corrispondente a ciò che ti aspetti.
    Esempio banale: chiedi all'utente di inserire un numero compreso tra 0 e 10, anche se il bind di PDO ti mette al sicuro da SQL injection, se non controlli niente l'utente potrebbe inviare 57, secondo il bind di PDO è tutto ok, ma il dato è completamente sballato. Verificando che l'input sia effettivamente compreso tra 0 e 10 stai implicitamente anche validandone il tipo.

    In parole povere, di dritto o di traverso, la validazione comunque devi farla anche lato PHP.

    Inoltre se non controlli il dato lato PHP ed arrivato alla query il bind fallisce, ti becchi un errore ed un crash dello script se non lo gestisci, validando i dati con PHP ti ripari da questa evenienza.
    Perfetto sei stato chiarissimo ! mi serviva solo capire se in linea di massima il concetto, così come lo avevo inteso, era giusto, resta comunque il fatto, che la validazione continuo a farla !
    Grazie per l'aiuto !
    aquatimer2000

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    La validazione dei dati la puoi fare anche dalla parte client per evitare invii allo server. Pero’ se deve essercene solo una deve esere lato server.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Quote Originariamente inviata da badaze Visualizza il messaggio
    La validazione dei dati la puoi fare anche dalla parte client per evitare invii allo server. Pero’ se deve essercene solo una deve esere lato server.
    Ciao badaze!!
    io di solito faccio una validazione lato client (tramite la validazione forum di bootstrap e altri script ad hoc javascript) e poi ricontrollo lato server.

    ovvio, il tuo con le mie limitazioni di "scrittore di programmi", non sono un professionista e quindi ecco.. sicuramente qualche errore lo faccio, e sicuramente si può fare molto meglio di quello che faccio

    comunque i consigli sono sempre ben accetti!!
    Grazie!!!
    aquatimer2000

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Bene. Sono sicuro che non tutti i professionisti facciano come te !
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.