Tôi hiểu đúng cách để bảo vệ db khỏi việc tiêm SQL là bằng cách sử dụng các câu lệnh đã chuẩn bị. Tôi muốn hiểu cách câu lệnh chuẩn bị bảo vệ db của tôi.Trong PHP, PDO bảo vệ như thế nào khỏi việc tiêm SQL? Báo cáo chuẩn bị hoạt động như thế nào?
Đối với người mới bắt đầu, các câu được chuẩn bị giống như "truy vấn được tham số"?
Ví dụ: tôi dán bên dưới mã của mình để chèn người dùng mới vào bảng người dùng. Điều đó có an toàn không? PDO hoạt động như thế nào để đảm bảo an toàn? Có bất cứ điều gì cần phải được thực hiện để đảm bảo db từ tiêm?
Trong '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);
}
}
Trong '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();
}
}
Cảm ơn,
JDelage
liên quan: http://stackoverflow.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection –
Cảm ơn Haim, phản ứng troelskn trả lời câu hỏi của tôi. – JDelage
'được chuẩn bị báo cáo cùng một điều như" truy vấn tham số "? Ngoài ra, hãy để tôi chỉ cho bạn một vấn đề khác liên quan đến tiêm sql, được mô tả trong câu trả lời trước đây của tôi: http://stackoverflow.com/questions/2993027/in-php-when-submitting-strings-to-the-db-should- i-take-care-of-legal-characters/2995163 # 2995163 vì chúng tôi không chỉ chèn dữ liệu vào các truy vấn của chúng tôi, và các báo cáo đã chuẩn bị sẽ không giúp ích cho nó –