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

Mysql_real_escape_string () có bảo vệ HOÀN TOÀN khỏi SQL injection không?

Theo Stefan Esser, "mysql_real_escape_string() [là] không an toàn khi SET NAMES được sử dụng. "

Lời giải thích của anh ấy, từ blog của anh ấy :

SET NAMES thường được sử dụng để chuyển mã hóa từ những gì mặc định sang những gì ứng dụng cần. Điều này được thực hiện theo cách mà mysql_real_escape_string không biết về điều này. Điều này có nghĩa là nếu bạn chuyển sang một số mã hóa nhiều byte cho phép dấu gạch chéo ngược là byte thứ 2, thứ 3, thứ 4… thì bạn sẽ gặp rắc rối, vì mysql_real_escape_string không thoát chính xác. UTF-8 an toàn…

Cách an toàn để thay đổi mã hóa là mysql_set_charset , nhưng điều đó chỉ có sẵn trong các phiên bản PHP mới

Tuy nhiên, anh ấy đề cập rằng UTF-8 là an toàn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đánh giá hiệu suất của Moodle

  2. Tìm và thay thế toàn bộ cơ sở dữ liệu mysql

  3. Hàm SCHEMA () trong MySQL

  4. Tôi có thể tham số hóa tên bảng trong một câu lệnh đã soạn sẵn không?

  5. Cách lưu trữ Ký tự Emoji trong Cơ sở dữ liệu MySQL