Như bạn đã đề cập trong câu trả lời của @Developer, tôi có thể sẽ mã hóa HTML trên đầu vào của người dùng. Nếu bạn lo lắng về XSS, có lẽ bạn không bao giờ cần đầu vào của người dùng ở dạng ban đầu, vì vậy bạn cũng có thể thoát khỏi nó (và thay thế khoảng trắng và dòng mới trong khi bạn đang ở đó).
Lưu ý rằng thoát trên đầu vào có nghĩa là bạn nên sử dụng @ Html.Raw hoặc tạo MvcHtmlString để hiển thị đầu vào cụ thể đó.
Bạn cũng có thể thử
System.Security.SecurityElement.Escape(userInput)
nhưng tôi nghĩ nó cũng sẽ không thoát khỏi không gian. Vì vậy, trong trường hợp đó, tôi khuyên bạn chỉ nên làm một .NET
System.Security.SecurityElement.Escape(userInput).Replace(" ", " ").Replace("\n", "<br>")
về đầu vào của người dùng. Và nếu bạn muốn tìm hiểu sâu hơn về khả năng sử dụng, có lẽ bạn có thể thực hiện phân tích cú pháp XML của đầu vào của người dùng (hoặc chơi với các biểu thức thông thường) để chỉ cho phép một bộ thẻ được xác định trước. Chẳng hạn, cho phép
<p>, <span>, <strong>
... nhưng không cho phép
<script> or <iframe>