Capisco il modo giusto per proteggere un db dall'iniezione SQL utilizzando le istruzioni preparate. Mi piacerebbe capire come le istruzioni preparate proteggono il mio db.In PHP, come protegge PDO dalle iniezioni SQL? Come funzionano le dichiarazioni preparate?
Per i principianti, le istruzioni preparate sono la stessa cosa di "query parametrizzate"?
Ad esempio, sto incollando sotto il mio codice per l'inserimento di un nuovo utente in una tabella utente. È sicuro? Come funziona la PDO per renderla sicura? C'è ancora qualcosa da fare per proteggere il db dall'iniezione?
In 'Class_DB.php':
class DB {
private $dbHost;
private $dbName;
private $dbUser;
private $dbPassword;
function __construct($dbHost, $dbName, $dbUser, $dbPassword) {
$this->dbHost=$dbHost;
$this->dbName=$dbName;
$this->dbUser=$dbUser;
$this->dbPassword=$dbPassword;
}
function createConnexion() {
return new PDO("mysql:host=$this->dbHost;dbName=$this->dbName", $this->dbUser, $this->dbPassword);
}
}
In 'DAO_User.php':
require_once('Class_DB.php');
class DAO_User {
private $dbInstance;
function __construct($dbInstance){
$this->dbInstance=$dbInstance;
}
function createUser($user){
$dbConnection=$this->dbInstance->createConnexion();
$query=$dbConnection->prepare("INSERT INTO users (userName, hashedPassword, userEmail) VALUES (?,?,?)");
$query->bindValue(1, $user->userName);
$query->bindValue(2, $user->hashedPassword);
$query->bindValue(3, $user->userEmail);
$query->execute();
}
}
Grazie,
JDelage
correlato: http://stackoverflow.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection –
Grazie Haim, la risposta troelskn risponde alla mia domanda. – JDelage
'le istruzioni preparate sono la stessa cosa di" query parametrizzate "?' Sì. Inoltre, permettimi di indicarti un altro problema relativo a SQL injection, descritto nella mia risposta precedente: http://stackoverflow.com/questions/2993027/in-php-when-submitting-strings-to-the-db-should- i-take-care-of-illegal-characters/2995163 # 2995163 poiché non abbiamo solo dati inseriti nelle nostre query, e le dichiarazioni preparate non lo aiuterebbero –