Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng mysqli_real_escape_string có đủ để bảo mật chuỗi truy vấn của tôi không?

Nếu được sử dụng ở mọi nơi một cách chính xác thì real_escape_string là một tùy chọn. Nhưng hãy xem xét đoạn mã sau:

$page = $_GET['page'];
$sql = 'SELECT `name` FROM `user` WHERE `id` = ' . mysqli_real_escape_string($page);

An toàn hay không? real_escape_ string chỉ có thể được sử dụng để thoát chuỗi bên trong dấu ngoặc kép. $page có thể là 1 OR id IN (2,3,4,5,6,7,8,9) → không có dấu ngoặc kép, không có thoát thực. Truyền tới đúng kiểu dữ liệu (int) có thể hữu ích trong trường hợp này. Tốt hơn hết bạn nên sử dụng các câu lệnh đã chuẩn bị sẵn, chúng không dễ bị sử dụng sai.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay thế cho một phần (cột không được tổng hợp) trong nhóm theo [Vấn đề về khoảng không quảng cáo của Ollivander trên hackerrank]

  2. Làm thế nào để MySQL nhận biết được các ký tự nhiều byte trong LIKE và REGEXP?

  3. Chèn tệp vào mysql Blob

  4. Cập nhật chế độ xem tự động trong MySql

  5. Bảng MyISAM và InnoDB trong một cơ sở dữ liệu