Câu hỏi: Sản phẩm ngăn ngừa XSS (cross-site scripting) như đơn giản sử dụng strip_tags
trên bất kỳ lĩnh vực đầu vào lưu và chạy htmlspecialchars
trên bất kỳ hiển thị đầu ra ... và ngăn ngừa SQL Injection bằng cách sử dụng các câu lệnh chuẩn bị PDO PHP?là ngăn ngừa XSS và SQL Injection dễ dàng như việc thực hiện điều này
Dưới đây là một ví dụ:
// INPUT: Input a persons favorite color and save to database
// this should prevent SQL injection (by using prepared statement)
// and help prevent XSS (by using strip_tags)
$sql = 'INSERT INTO TABLE favorite (person_name, color) VALUES (?,?)';
$sth = $conn->prepare($sql);
$sth->execute(array(strip_tags($_POST['person_name']), strip_tags($_POST['color'])));
// OUTPUT: Output a persons favorite color from the database
// this should prevent XSS (by using htmlspecialchars) when displaying
$sql = 'SELECT color FROM favorite WHERE person_name = ?';
$sth = $conn->prepare($sql);
$sth->execute(array(strip_tags($_POST['person_name'])));
$sth->setFetchMode(PDO::FETCH_BOTH);
while($color = $sth->fetch()){
echo htmlspecialchars($color, ENT_QUOTES, 'UTF-8');
}
Không hoàn toàn bắt được bạn - bạn sẽ truy cập mysql_query() giá trị $ save_to_database? Sau đó, bạn vẫn cần gọi 'mysql_real_escape_string()' trước khi bạn gửi truy vấn, nếu không bạn không được bảo vệ khỏi việc tiêm SQL (không phải là XSS, một lần nữa) – naivists
@naivists: Bạn có chắc chắn về điều đó không? Anh ta đang sử dụng các câu lệnh chuẩn bị. – Erlend