2010-11-07 28 views
5

Tôi có một trang web rao vặt đơn giản ...Tôi có nên sử dụng PDO để khử trùng các truy vấn Sql của mình hoặc là "mysql_real_escape_string" đủ không?

Phân loại được chèn vào bảng MySql và điều duy nhất tôi sử dụng để khử trùng đầu vào của người dùng là mysql_real_escape_string.

Điều này có đủ không?

Các PDO là cách tốt nhất, dĩ nhiên, nhưng những gì thực sự là sự khác biệt giữa việc sử dụng chỉ mysql_real_escape_string và PDO, trong phép nói truy vấn này:

SELECT * FROM table_name WHERE table_name.classified = '$classified'; 

HOẶC

INSERT INTO table_name (input1, input2) VALUES ('$input1', $input2); 

Cảm ơn

+1

Thoát quá dễ bị lãng quên. Các truy vấn tham số là phương pháp * an toàn vốn có *. (Nhưng btw, ví dụ của bạn dường như không sử dụng cách tiếp cận). Một ưu điểm khác của PDO là tăng tốc độ tiềm năng. Đó là lý thuyết hiện nay, bởi vì trình điều khiển PDO MySQL vẫn còn để thoát khỏi thay vì các tham số bị ràng buộc. – mario

+1

Trừ khi bạn thực sự cần trừu tượng cơ sở dữ liệu, bạn được khuyến khích sử dụng cả PDO lẫn MySql, thay vào đó là MySqli. Nó có hỗ trợ cho cả hai: [binding] (http://de2.php.net/manual/en/mysqli-stmt.bind-param.php) và [escaping] (http://de2.php.net/manual /en/mysqli.real-escape-string.php) – Gordon

Trả lời

2

Tôi nghĩ rằng mysql_real_escape_string là đủ để lưu trữ trong cơ sở dữ liệu và chống lại bất kỳ cuộc tấn công tiêm sql nào. Nhưng xác nhận khác là một ý tưởng tốt để có chỉ để dữ liệu của bạn là thường xuyên hơn và ít dễ bị chứa rác.

Để trình bày bất kỳ dữ liệu nào trong số này, lọc (kiểu kiểu Drupal vv) cũng là một ý tưởng hay.

Các vấn đề liên quan