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

Sử dụng mysql_real_escape_string để ngăn SQL Injection ở đâu?

Về cơ bản, mỗi lần bạn sử dụng một số dữ liệu không an toàn (thông tin người dùng nhập, giá trị từ cơ sở dữ liệu, tệp hoặc trang web bên ngoài, tức là bất kỳ dữ liệu nào mà bạn không phải là 100% đảm bảo rằng nó an toàn) trong một truy vấn SQL, bạn nên thoát nó bằng cách sử dụng mysql_real_escape_string . Lưu ý rằng theo OWASP , chức năng này không an toàn để thoát tên bảng động (nhưng điều này ít phổ biến hơn nhiều so với chèn đầu vào của người dùng "cơ bản").

Tôi khuyên bạn nên xem toàn bộ bài viết OWASP về SQL injection , và cũng để duyệt phần còn lại của trang web. Đó là một nguồn thông tin tuyệt vời về bảo mật trong các ứng dụng web.

IMO, cách ưa thích để ngăn chặn SQL injection là sử dụng tuyên bố chuẩn bị sẵn .

Hãy nhớ rằng nếu bạn chọn sử dụng mysql_real_escape_string() nó chỉ hoạt động khi được sử dụng bên trong một chuỗi được phân tách bằng dấu ngoặc kép. Không bao giờ sử dụng nó cho bất kỳ giá trị nào chưa được trích dẫn. Điều này bao gồm các giá trị số; thay vào đó, hãy xác thực rằng đầu vào của người dùng thực sự là số.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql - Cách thoát / thoát khỏi thủ tục được lưu trữ

  2. # 1062 - Mục nhập trùng lặp cho khóa 'CHÍNH'

  3. nhận tất cả các mục của danh mục và con của nó

  4. Laravel 4:nhiều nơi có hoặc hùng hồn

  5. MYSQL:Bảng số tuần tự