Việc viết các prepared statement (hay còn được gọi là parameterized queries) là một giải pháp phổ biến, tin cậy và bảo mật giúp chống lại SQL Injection.
Khi chúng ta gửi đi một câu truy vấn cho database để thực thi:
- Một SQL query template sẽ được gửi cho database. Một số giá trị, còn được gọi là các tham số, sẽ được để trống. Ví dụ: dữ liệu nhập vào của người dùng.
- Cơ sở dữ liệu xử lý câu truy vấn và tiến hành tối ưu.
- Các giá trị được truyền vào các tham số. Các giá trị này sẽ không được xem là code SQL bất kể nội dung của nó có cú pháp của SQL.
- Câu truy vấn sau đó được thực thi.
Ví dụ sử dụng prepared statements trong PHP:
$username= $_GET['user'];
$stmt = $conn->prepare("SELECT * FROM Users WHERE name = '?'");
$stmt->bind_param("s", $username);
$stmt->execute();
Ngoài khả năng bảo mật, prepared statements còn cải thiện hiệu năng của câu truy vấn.
Related
list
from outgoing([[Prepared Statement]])
sort file.ctime asc