我需要JavaScript(客户端)中的HTML ENCODE一个字符串(用户可以在其中插入HTML TAGS)从TextBox中绕过Reqeust.Validation。
Javascript应该编码字符串并在标签中显示它编码。
<asp:TextBox ID="uxValueInput" runat="server"></asp:TextBox>
<br />
<asp:Label ID="uxResultEncoded" runat="server" Text="Label"></asp:Label>
<asp:Button ID="uxEncodeButton" runat="server" Text="Button" />
我是JavaScript的新手,我在网上尝试过不同的脚本,但没有成功。 你能发一个非常简单的例子,这样我就能理解它是如何工作的。谢谢!
答案 0 :(得分:3)
我和David Dorland在一起:不要做这个客户端,而是禁用请求验证(here's an article saying how)。但如果你这样做,那么肯定你也可以使用Anti-XSS或类似的库来防止ASP.Net试图保护你的确切内容。
但是,如果您拥有在客户端上执行 minimal HTML编码的真实用例,则可以执行以下操作:
var escapes = {
'<': '<',
'>': '>',
'&': '&'
};
var raw = "Hi, I'm an <scr" + "ipt src='http://evil.example.com/attack.js'><\/script> evil & malicious attack.";
var encoded = raw.replace(/[<>&]/g, function(m) {
return escapes[m];
});
以下是它的工作原理:
escapes
的地图,它将原始字符映射到HTML实体(因此将<
映射到<
等。)String#replace
和正则表达式搜索所有<
,>
和&
字符,并将其替换为等效实体。当您将函数作为第二个参数传递给String#replace
时,将为每个匹配调用它并使用返回值作为替换。正则表达式/[<>&]/g
表示字符串中的“查找<
,>
或&
全局(g
标志) ”