我找到了一种使用JavaScript编码数据的解决方案,该数据在.NET中解码(并且不需要jQuery)。
- 使文本框成为HTML元素(例如textarea),而不是ASP。
- 添加一个隐藏的字段。
将以下JavaScript函数添加到标题中。
函数boo(){targetText = document.getElementById(“ HiddenField1”); sourceText = document.getElementById(“ userbox”); targetText.value = escape(sourceText.innerText); }
在您的文本区域中,包含一个调用boo()的onchange:
<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发布,他们只会看到错误。您也可以将所有编码后的数据保存在数据库中,然后取消转义(在服务器端),并在显示其他位置之前解析并检查攻击。