Tôi đã nghe mọi người nói (liên quan đến C#/SQL Server, nhưng cũng liên quan đến PHP/MySql): Không thoát chuỗi theo cách thủ công - sử dụng các thủ tục đã lưu thay thế.Tại sao mysql_real_escape_string() không nên tránh bất kỳ SQL Injection nào?
Ok, tôi có thể chấp nhận đề xuất này, nhưng tại sao? Nhiều người nói (kể cả trên SO) mysql_real_escape_string()
là khá đủ, mysql_real_escape_string()
là tốt, mysql_real_escape_string()
là cách bảo vệ đầu tiên.
Tại sao? Có trường hợp nào mysql_real_escape_string()
có thể không thành công không? Ít nhất một ... Tôi không cần nhiều :)
Điểm yếu lớn nhất là _you_ có thể quên sử dụng! –
Bạn sẽ thấy ít sử dụng các thủ tục lưu sẵn trong MySQL hơn là trong SQL Server, nhưng việc sử dụng các câu lệnh chuẩn bị thường là những gì được khuyến khích với PHP/MySQL APIs. –
Tôi chưa từng gặp vấn đề gì khi sử dụng mysql_real_escape_string(). Tôi nghĩ mọi người nói để sử dụng quy trình cửa hàng thay vì là có cơ hội để quên sử dụng mysql_real_escape_String(). – Khronos