Je comprends que la bonne façon de protéger une base de données contre l'injection SQL est d'utiliser des instructions préparées. Je voudrais comprendre comment déclarations préparées protègent mon DB.En PHP, comment PDO protège-t-il des injections SQL? Comment fonctionnent les déclarations préparées?
Pour les démarreurs, les instructions préparées sont-elles identiques aux "requêtes paramétrées"? Par exemple, je colle sous mon code pour l'insertion d'un nouvel utilisateur dans une table utilisateur. Est-ce sécurisé? Comment fonctionne PDO pour le sécuriser? Est-ce que quelque chose de plus doit être fait pour sécuriser le db de l'injection?
Dans '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);
}
}
Dans '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();
}
}
Merci,
JDelage
connexes: http://stackoverflow.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection –
Merci Haim, les réponses réponse troelskn ma question. – JDelage
'les instructions préparées sont-elles identiques aux" requêtes paramétrées "?' Oui. Aussi, permettez-moi de vous signaler un autre problème lié à l'injection sql, décrit dans ma réponse précédente: http://stackoverflow.com/questions/2993027/in-php-when-submitting-strings-to-the-db-should- i-take-care-of-illegal-characters/2995163 # 2995163 car nous avons non seulement des données insérées dans nos requêtes, et les déclarations préparées ne l'aideraient pas –