2012-04-30 27 views
5

Có nghĩa là, tại thời điểm này, là an toàn nhất để kiểm tra dữ liệu trong php để gửi chúng đến cơ sở dữ liệu mysql.Làm thế nào để an toàn thoát khỏi dữ liệu đầu vào trong php cho mysql

Thank, bạn)

+0

Ngoài các câu trả lời dưới đây, nó có giá trị đọc http://stackoverflow.com/questions/60174/best-way-to -stop-sql-injection-in-php – eggyal

+0

Và nếu tôi sử dụng mysql_connect? – frops

Trả lời

11

Tôi tin mysql_real_escape_string() mysqli_real_escape_string() là cách tốt nhất để thoát dữ liệu đầu vào

chỉnh sửa Sau đó kể từ khi tất cả mọi thứ bị phản đối ngay bây giờ và thông tin phải có giá trị:

Cố gắng sử dụng PDO như các báo cáo chuẩn bị an toàn hơn nhiều hoặc mysqli_*() functions nếu bạn thực sự cần giữ mã cũ được cập nhật một phần.

+9

Tôi sẽ tranh luận rằng việc truyền các chuỗi của bạn như các tham số cho các câu lệnh đã chuẩn bị là an toàn hơn. – eggyal

+0

Tôi cũng đang sử dụng nó cho họ – frops

+0

Tôi đồng ý với eggyal. – Menztrual

4
validMySQL($var) { 
$var=stripslashes($var); 
$var=htmlentities($var); 
$var=strip_tags($var); 
$var=mysql_real_escape_string($var); 
return $var 
} 

Đoạn mã trên sẽ giúp khử trùng dữ liệu không hợp lệ nhất, chỉ cần nhớ rằng bạn đã được kết nối với cơ sở dữ liệu mysql cho mysql_real_escape_string để làm việc ...

3

Hiện nay cách ưa thích nhất để đảm bảo sự an toàn của bạn là báo cáo chuẩn bị.

dụ:

$preparedStatement = $db->prepare('SELECT * FROM memebers WHERE username = :username'); 

$preparedStatement->execute(array(':username' => $username)); 

$rows = $preparedStatement->fetchAll(); 

sau đó khi hiển thị dữ liệu của bạn sử dụng htmlspecialchars()

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