Tôi có một vùng văn bản trong một Ứng dụng ASP.NET MVC nơi người dùng có thể nhập một số văn bản. Khi tôi hiển thị văn bản cho người dùng, tôi sử dụng Html.Encode
để ngăn đầu vào độc hại. Vấn đề là người dùng có thể nhập bằng tiếng Tây Ban Nha và có thể anh ta nhập año
và số Encode
chuyển đổi số này thành año
. Làm thế nào tôi có thể ngăn chặn điều này?Khi mã hóa đầu vào HTML để bảo mật, làm cách nào để tránh mã hóa các ký tự quốc tế như Ñ hoặc ñ?
EDIT: Trong HTML được tạo ra, tôi thấy điều này:
<a href="a1-'a1'-Cama&#241;o?sort=estadisticas#241;o">a1 'a1' Cama&#241;o</a>
Sau đó trong trang tôi có điều này, và lần này màn hình hiển thị là chính xác:
<b>a1 'a1' Camaño</b>
Đầu tiên được tạo ra này cách:
<%= Html.RouteLink(Html.Encode(Model.NAME), ...... %>
và thứ hai như sau:
<%= Html.Encode(Model.NAME)%>
Vì vậy, tôi đoán là sự cố xảy ra với Html.RouteLink
.
Đơn khiếu nại của bạn có mã hóa ký tự quốc tế hay người dùng thấy các ký tự được mã hóa thay vì các ký tự mà họ đã nhập không? Nếu đó là sau, thì câu trả lời "mã hóa hai lần vô tình" là chính xác. Nếu không, hãy cho chúng tôi biết. – Eddie