Thứ Sáu, 11 tháng 2, 2011

PHP addslashes có đủ tốt để chống SQL Injection?

Khi dạo qua các diễn đàn PHP, tôi thấy mọi người thường luận bàn về vấn đề này. Thực sự thì nó rất đơn giản.

1. PHP addslashes đủ tốt để chống SQL Injection  với các database sử dụng ' hoặc " để bao giá trị.

2. Nhưng addslashes chưa đủ tốt cho một cơ sở dữ liệu nào đó yêu cầu nhiều hơn việc thêm \ cho dấu ' và ". Ví dụ như đối với MySQL và đặc biệt khi xử lý các truy vấn với dữ liệu kiểu binary bắt buộc phải thêm \ cho \x00\n\r\'" and \x1a. Lúc này phải sử dụng hàm mysql_real_escapse_string.

Nên với MySQL, phải sử dụng mysql_real_escape_string trước khi gọi truy vấn thay vì sử dụng addslashes. Và với các database khác cũng vậy, phải tìm hiểu giải pháp có sẵn trong PHP trước khi dùng addslashes hoặc sáng tạo ra một hàm mới với mục đích tương tự (theo kiểu str_replace("'", "'", $a) ). Hãy giả sử  database của bạn không dùng ' " để bao các dữ liệu thì sao :D, lúc đó mà dùng addslashes là tắt điện ngay.

1 nhận xét: