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

Khi tôi thoát tất cả đầu vào, đôi khi Nó để lại dấu gạch chéo (\) trong chuỗi và chèn nó vào cơ sở dữ liệu. Tại sao nó xảy ra và làm thế nào tôi có thể giải quyết điều này?

Bạn nói đúng.
nội dung trích dẫn ma thuật không liên quan gì đến nội dung sql và không nên được kết nối với nó.
Vì trích dẫn ma thuật là một vấn đề trên toàn trang web và thoát sql chỉ là vấn đề liên quan đến sql.

Vì vậy, họ cần điều trị khác nhau và không bao giờ được sử dụng kết hợp với nhau.

Bạn phải loại bỏ những câu trích dẫn ma thuật một cách vô điều kiện, bởi vì nó không chỉ làm hỏng nội dung SQL mà còn làm hỏng mọi thao tác dữ liệu trên trang web của bạn.

Vì vậy, sẽ là khôn ngoan nếu bạn đặt một số mã dải ngắn trong bất kỳ tệp bootstrap nào để chạy trên mọi lệnh gọi của tập lệnh. Mã bạn có thể tìm thấy trong nhiều cách triển khai mã như vậy, chỉ cần google để tìm hàm 'striplashes_deep'.

Sẽ là khôn ngoan nếu mã này luôn chạy (tất nhiên trong điều kiện kiểm tra get_magic_quotes_gpc ()) bất chấp trạng thái thực tế của dấu ngoặc kép, chỉ vì mục đích tương thích.

Nhưng có một khả năng khác để tắt chúng:cố gắng tạo tệp php.ini trong thư mục gốc của ứng dụng của bạn.

Tuy nhiên, có một sai lầm nghiêm trọng trong mã của bạn. Trên thực tế, nó không bảo vệ bất cứ thứ gì.
Bạn đang thoát $memberid$postid nhưng đừng trích dẫn chúng! . Như vậy, không có biện pháp bảo vệ nào cả. Chỉ vì thoát chỉ hoạt động khi được sử dụng với trích dẫn.

Xin hãy nhớ:

Thoát không phải là từ đồng nghĩa với bảo mật!

Chạy trốn một mình chẳng giúp được gì. Có một bộ quy tắc toàn bộ cần phải tuân theo.

Gần đây, tôi đã viết một lời giải thích phù hợp, vì vậy, tôi sẽ không lặp lại chính mình: Thay thế các hàm mysql_ * bằng PDO và các câu lệnh đã chuẩn bị



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDb không hỗ trợ hàm ANY_VALUE ()

  2. Hoàn thành cuộc gọi AJAX trước khi nút PayPal chuyển hướng

  3. Đơn giản chỉ cần chuyển đổi số 5 chữ số trong cơ sở dữ liệu mysql thành một ngày

  4. Quy ước đặt tên PHP / MySQL:camelCase so với under_score?

  5. Cách lấy ngày từ cột ngày giờ trong MySQL