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

Sử dụng các tham số cho mysql_query

Trước hết, điều này được gọi là SQL-Injection . Về cơ bản, nó chỉ là khả năng thay đổi các truy vấn đối với cơ sở dữ liệu thông qua đầu vào của người dùng.

Hãy xem một ví dụ:

Truy vấn:

SELECT temp1 FROM temp WHERE temp2 = 'VAR1';

Bây giờ chúng ta sẽ gán VAR1 giá trị của:'; DROP TABLE *; -- Và chúng tôi sẽ nhận được:

SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';

Với mysql_real_escape_string nó sẽ trông như thế này:

SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'

mysql_real_escape_string 'bảo mật' một chuỗi để sử dụng trong một truy vấn.

Nhưng cuối cùng, bạn nên ngừng sử dụng mysql_* hoàn toàn . Chúng không được chấp nhận và được coi là không an toàn khi nói đến việc ngăn chặn việc đưa vào SQL hoặc các phương tiện xử lý khác với các truy vấn.

Bạn chỉ nên ngừng kết hợp các truy vấn với nhau như thế này và bắt đầu sử dụng báo cáo đã chuẩn bị sẵn , không chỉ dễ sử dụng hơn, ngăn SQL Injection theo mặc định mà còn có thể cải thiện tốc độ ứng dụng của bạn.

Đối với PHP, có hai phần mở rộng được thiết kế để đóng toàn bộ mysql_* đã mở:

Và tôi nói lại lần nữa: Vui lòng ngừng sử dụng mysql_* !



  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ận dữ liệu 12 tháng qua trong MySQL

  2. Kiểm tra NULL trên một Bộ sưu tập trong các truy vấn JPQL?

  3. Lưu trữ datetime php trong cơ sở dữ liệu mysql

  4. Độ sâu trong MYSQL và Cây trên bàn đóng cửa

  5. Cách lưu trữ dữ liệu bằng unicode bằng ngôn ngữ tiếng Hin-ddi