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

bind_param () chỉ cần thiết đối với các giá trị do người dùng nhập vào hay tất cả?

Về mặt kỹ thuật, bạn sẽ không gặp rủi ro nếu bạn không chuẩn bị dữ liệu không đến từ đầu vào của người dùng. Tuy nhiên, chúng tôi khuyên bạn nên làm như vậy vì một số lý do:

  1. Nếu bạn quên chuẩn bị bất kỳ dữ liệu đầu vào nào của người dùng ở đâu đó, thì rất có thể người dùng này đã đưa một thứ gì đó linh tinh vào một hàng dữ liệu mà bạn không mong đợi là dữ liệu nhập của người dùng.
  2. Một phương pháp hay là lặp lại những gì bạn đang làm để giữ an toàn cho máy chủ của bạn. Nếu bạn bắt đầu trộn nó, nhiều khả năng bạn sẽ quên việc chuẩn bị dữ liệu ở những nơi thực sự cần thiết để làm như vậy.
  3. Việc chuẩn bị dữ liệu của bạn không chỉ để ngăn chặn việc đưa vào SQL từ những kẻ tấn công. Nó cũng sẽ ngăn chặn một số vấn đề về cơ sở dữ liệu trong trường hợp bạn vô tình tạo ra một lỗi trong mã của mình. Ví dụ:

Ở đâu đó trong mã của bạn, bạn có một hệ thống nhật ký để thêm một nhật ký lỗi vào cơ sở dữ liệu của bạn. Chuỗi sẽ là:


Chuỗi này được tạo bởi tập lệnh của bạn. Vì bạn không chuẩn bị nó. Tuy nhiên, các dấu ngoặc kép bên trong chuỗi này sẽ gây ra lỗi với cơ sở dữ liệu của bạn mà có thể đã được ngăn chặn nếu bạn vẫn 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. Cách bảo vệ tệp khỏi tải xuống trái phép

  2. Dấu phân cách trong MySQL

  3. Thư viện không được tải:@ rpath / libmysqlclient.21.dylib Lý do:không tìm thấy hình ảnh Lỗi di chuyển Django sử dụng trình điều khiển DB mysqlclient và MySQL 8 với macOS

  4. MySQL Trường hợp ngày lớn hơn một tháng?

  5. Làm thế nào mà SQL này có thể sai? Tôi không nhìn thấy gì?