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.