Я нашел решение, использующее JavaScript для кодирования данных, которое декодируется в .NET (и не требует jQuery).
В вашей текстовой области включите onchange, который вызывает boo ():
<textarea id="userbox" onchange="boo();"></textarea>
Наконец, в .NET используйте
string val = Server.UrlDecode(HiddenField1.Value);
Я знаю, что это односторонний подход - если вам нужен двусторонний подход, вам придется проявить творческий подход, но это дает решение, если вы не можете редактировать web.config
Вот пример, который я (MC9000) придумал и использовал через jQuery:
$(document).ready(function () {
$("#txtHTML").change(function () {
var currentText = $("#txtHTML").text();
currentText = escape(currentText); // Escapes the HTML including quotations, etc
$("#hidHTML").val(currentText); // Set the hidden field
});
// Intercept the postback
$("#btnMyPostbackButton").click(function () {
$("#txtHTML").val(""); // Clear the textarea before POSTing
// If you don't clear it, it will give you
// the error due to the HTML in the textarea.
return true; // Post back
});
});
И разметка:
<asp:HiddenField ID="hidHTML" runat="server" />
<textarea id="txtHTML"></textarea>
<asp:Button ID="btnMyPostbackButton" runat="server" Text="Post Form" />
Это прекрасно работает. Если хакер попытается отправить сообщение в обход JavaScript, он просто увидит ошибку. Вы также можете сохранить все эти данные, закодированные в базе данных, затем удалить их (на стороне сервера) и проанализировать и проверить на наличие атак, прежде чем отображать их в другом месте.