显示错误消息“有潜在危险的Request.Form值”对用户有一吨的这个特定的异常问题,但我找不到任何会适合我的需要。我不想禁用验证,也不想手动转义每个表单输入值。如何在ASP.NET MVC 3
是否有以相同的方式来显示此错误消息给用户作为ASP.NET MVC通知的形式不提供所需的值的用户的方法吗?我认为这将是处理这种错误的最简单的方法。
显示错误消息“有潜在危险的Request.Form值”对用户有一吨的这个特定的异常问题,但我找不到任何会适合我的需要。我不想禁用验证,也不想手动转义每个表单输入值。如何在ASP.NET MVC 3
是否有以相同的方式来显示此错误消息给用户作为ASP.NET MVC通知的形式不提供所需的值的用户的方法吗?我认为这将是处理这种错误的最简单的方法。
这个错误只是ASP.NET中的一个安全网;一旦你检查你正在编码你的文本,微软会希望你禁用这个错误。
这不是有关手动逸出每个输入表格值。这是关于HTML编码呈现给页面的所有面向用户的文本。只是在表单中输入的文本经常显示回用户。
例如,字符串"My age is > 21 & < 90"
不是有效的HTML,并且不会正确显示给用户(这可能会在跨站点脚本攻击中被滥用)。如果您显示的任何字符串不是有效的HTML,那么您的已将对其进行HTML编码。幸运的是,在MVC中有很多简单的方法可以做到这一点(使用<%: %>
的操作符就是其中之一)。如果您正确地执行此操作,则无需启用此错误。
对不起,我知道这是不是你要的答案,但我相信保持开启这个错误仅仅是对用户不友好的原因是多方面的。
这为我澄清了它。我没有意识到这只是一个安全网。 –
$("form").submit(function(e){
var invalid = $("form").find("input:text,input:hidden,textarea").filter(function() {
var value = $(this).val();
var encoded = $("<div>").html(value).text();
return value != encoded;
}).length > 0;
if (invalid)
{
e.preventDefault();
//show validation message
}
}
这工作得很好;谢谢! – GendoIkari
你使用jQuery?没有标签,但我能想到的解决方案的客户端,将可能工作 – hunter
我可以使用jQuery,但不希望为他们写自己的验证逻辑,因为如果某种新的潜在危险值的验证被添加到ASP.NET MVC的,它会从我的实现中丢失。 –
另外,总有一种可能性,有人在没有JavaScript支持的情况下使用我的网站,他们会被发送到一个通用的“内部服务器错误”页面,它不会告诉他们任何东西。 –