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

Sử dụng htmlspecialchars () trước khi chèn vào MySQL có tốt không?

Như những người khác đã chỉ ra, # 2 là câu trả lời chính xác. Để nguyên trạng thái "thô" cho đến khi bạn cần, sau đó thoát ra một cách thích hợp.

Để giải thích rõ hơn tại sao (và tôi sẽ lặp lại / tóm tắt các bài viết khác), hãy xem kịch bản 1 đến mức cực đoan hợp lý của nó.

Điều gì xảy ra khi ai đó nhập "' OR 1=1 <other SQL injection> -- ". Bây giờ có thể bạn quyết định rằng vì bạn sử dụng SQL, bạn nên mã hóa cho SQL (có thể vì bạn không sử dụng câu lệnh được tham số hóa). Vì vậy, bây giờ bạn phải kết hợp (hoặc quyết định) mã hóa SQL và HTML.

Đột nhiên, sếp của bạn quyết định rằng ông ấy cũng muốn có một đầu ra XML. Bây giờ để giữ cho mẫu của bạn nhất quán, bạn cũng cần mã hóa cho mẫu đó.

CSV tiếp theo - ồ không! Điều gì sẽ xảy ra nếu có dấu ngoặc kép và dấu phẩy trong văn bản? Thoát nhiều hơn!

Này - làm thế nào về một giao diện AJAX tương tác đẹp mắt? Bây giờ bạn có thể muốn bắt đầu gửi JSON trở lại trình duyệt nên bây giờ {, [v.v ... tất cả đều cần được xem xét. GIÚP ĐỠ !!

Vì vậy, rõ ràng, hãy lưu trữ dữ liệu như đã cho (tất nhiên phải tuân theo các ràng buộc về miền) và mã hóa phù hợp với đầu ra của bạn vào thời điểm bạn cần . Đầu ra của bạn không giống với dữ liệu của bạn.

Tôi hy vọng câu trả lời này không quá bảo trợ. Ghi có cho những người trả lời khác.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate- không thể khởi tạo một cách lười biếng tập hợp vai trò:bean.Language.patients, không thể khởi tạo proxy - không có phiên

  2. không thể kết nối với docker mysql từ cục bộ

  3. mysql không được công nhận là lệnh nội bộ hoặc lệnh bên ngoài, chương trình có thể hoạt động hoặc lô

  4. Tạo các lớp C # dựa trên bảng MySQL

  5. LỖI khi gửi bảng dưới dạng tham số trong thủ tục lưu trữ MySQL