C# 针对潜在危险请求的JavaScript编码
因此,我在不同的环境中遇到了无处不在的ASP.NET“潜在危险请求”问题几次。在使用CKEditor时,我通过使用一般建议将“htmlEncodeOutput”选项设置为true,成功地击败了它。在其他情况下,我使用了另一个广泛给出的建议,将页面验证恢复到旧版本,这实际上是告诉服务器忽略通过的HTML。好吧 但我还没有弄清楚的是如何自己编码文本(并保持验证)。我尝试了JavaScript escape()和encodeURI()函数,以及一个小字符串.replace()函数,该函数将括号转换为>和C# 针对潜在危险请求的JavaScript编码,c#,javascript,asp.net-mvc-3,C#,Javascript,Asp.net Mvc 3,因此,我在不同的环境中遇到了无处不在的ASP.NET“潜在危险请求”问题几次。在使用CKEditor时,我通过使用一般建议将“htmlEncodeOutput”选项设置为true,成功地击败了它。在其他情况下,我使用了另一个广泛给出的建议,将页面验证恢复到旧版本,这实际上是告诉服务器忽略通过的HTML。好吧 但我还没有弄清楚的是如何自己编码文本(并保持验证)。我尝试了JavaScript escape()和encodeURI()函数,以及一个小字符串.replace()函数,该函数将括号转换为>
函数htmlEncode{
返回s.replace(//&/g,“,”)。replace(//g,”)。replace(//“/g,“,”);
}
谢谢。这对我正在使用的测试样本有效,我将要使用它。不过,我还是想知道我读到的一些奇怪的实例,比如“on.”,它应该触发“潜在的”“有助于防止SQL注入攻击的危险错误。@Brent,你能给我指一下你读过的那篇文章吗?我不太清楚你指的是什么。嗯……不是一篇文章,而是一条帖子,海报试图找出他出错的原因:@Brent,听起来海报使用了一个反XSS过滤器,试图拒绝像onclick=javascript\u goes\u here
这样的模式。如果您的过滤器过于宽泛,.replace(/=/g,&&61;')
将有助于解决这一问题。
function htmlEncode(s) {
return s.replace(/&/g, '&').replace(/</g, '<')
.replace(/>/g, '>').replace(/"/g, '"');
}