Chỉ muốn hiểu suy nghĩ ở đây và đến một cách tiếp cận chính xác và được chấp nhận cho vấn đề này. Đối với ngữ cảnh, điều này là trong một môi trường web và chúng ta đang nói về thoát trên đầu vào cho cơ sở dữ liệu.Lưu trữ mã độc hại trong cơ sở dữ liệu - là thoát-trên-đầu ra luôn luôn là cách tiếp cận chính xác?
Tôi hiểu nhiều lý do đằng sau việc không thoát trên đầu vào khi đưa người dùng nhập và lưu trữ nó vào cơ sở dữ liệu. Bạn có thể muốn sử dụng đầu vào đó theo nhiều cách khác nhau (như JSON, dưới dạng SMS vv) và bạn cũng có thể muốn hiển thị đầu vào đó cho người dùng ở dạng ban đầu của nó.
Trước khi đưa bất kỳ thứ gì vào cơ sở dữ liệu, chúng tôi đảm bảo không có các cuộc tấn công SQL injection để bảo vệ cơ sở dữ liệu.
Tuy nhiên following the principals set out here và here, họ đề xuất phương pháp lưu dữ liệu nhập của người dùng như hiện tại. Đầu vào của người dùng này có thể không phải là một cuộc tấn công SQL injection, nhưng nó có thể là mã độc khác. Trong những trường hợp này là OK để lưu trữ các cuộc tấn công XSS dựa trên Javascript vào cơ sở dữ liệu?
Tôi chỉ muốn biết các giả định của tôi có đúng không, chúng ta có ổn với việc lưu trữ mã độc trong cơ sở dữ liệu miễn là mã độc không ảnh hưởng trực tiếp đến cơ sở dữ liệu không? Nó là một trường hợp của nó không phải là vấn đề của cơ sở dữ liệu, nó có thể giữ mã độc này và lên đến thiết bị đầu ra để tránh những cạm bẫy của mã độc hại?
Hoặc chúng ta có nên thực hiện thoát nhiều hơn trên đầu vào hơn đề xuất của các hiệu trưởng này không - các mối quan ngại về bảo mật có xuất hiện trước ý tưởng thoát trên đầu ra không? Chúng ta có nên dùng cách tiếp cận mà không có mã độc nào xâm nhập vào cơ sở dữ liệu không? Tại sao chúng tôi muốn lưu trữ mã độc hại?
Cách tiếp cận chính xác để lưu mã độc hại vào cơ sở dữ liệu trong ngữ cảnh của môi trường máy khách/máy chủ web là gì?
[Theo mục đích của việc này tôi bỏ qua bất kỳ trang web mà cụ thể cho phép mã để được chia sẻ trên họ, tôi đang nghĩ đến việc đầu vào "bình thường" như Name, Comment và trường Mô tả.]