Этот вопрос задавался ранее, но я должен понять, что я не нашел реального / лучшего способа сделать это!
Проблема в том, что я хочу закодировать ответ, полученный от вызова AJAX, чтобы предотвратить атаки межсайтового скриптинга (XSS). У меня есть форма с текстовым полем и кнопкой отправки. При отправке значение публикуется на сервере и возвращается клиенту. Здесь мне нужно HTML закодировать ответ, как сообщение, например может быть "alert ('Hello')" и т. д.
Как мне кодировать item.Message в следующем?
View
$(document).ready(function () {
$("form[action$='SubmitChatMessage']").submit(function () {
$.ajax({
url: $(this).attr("action"),
type: "post",
dataType: "json",
data: $(this).serialize(),
success: function (response) {
$("#chatMessages").empty();
var chatMessages = "";
$.each(response, function (i, item) {
chatMessages += '<div>' + item.Message + '</div>';
});
$("#chatMessages").html(chatMessages);
$("#message").val(''); // Clear the textbox value
}
});
return false;
});
});
<div id="chatContent">
<% using(Html.BeginForm("SubmitChatMessage", "ProductDetails"))
{%>
<%: Html.TextBox("message")%>
<%: Html.Hidden("productId", Model)%>
<input type="submit" value="Tilføj" />
<% }%>
<div id="chatMessages">
</div>
</div>
Действие контроллера
[HttpPost]
[ValidateInput(false)]
public JsonResult SubmitChatMessage(string message, Guid productID)
{
// 1. Store message in db
// 2. Fetch messages from db
List<Message> chats = DB.GetMessages(productID);
var json = (from c in chats
select new {Message = c.Message, CreatedDate = c.Created});
return Json(json);
}
Надеюсь получить ответ, это сводит меня с ума!
Подобный вопрос был задан здесь , но я не вижу, как использовать .text в моем случае.
UPDATE:
Это действительно решение?