默认情况下,HTML编码ASP.NET MVC 2站点中的所有输入

默认情况下,HTML编码ASP.NET MVC 2站点中的所有输入,asp.net,asp.net-mvc,security,asp.net-mvc-2,Asp.net,Asp.net Mvc,Security,Asp.net Mvc 2,你好 我想对ASP.NET MVC 2站点上的所有用户输入进行html编码,但默认情况下是这样。可以在模型活页夹级别的任何位置执行此操作吗 如果我禁用操作的输入验证——我将需要对其他每个值进行html编码。如果我保持ASP.NET请求验证处于打开状态--它将抛出错误“从客户端检测到一个潜在危险的请求。表单值” 另外,我在输出数据(语法)时确实使用编码,但我也希望在发布数据时对所有内容进行编码 提前谢谢 不幸的是,XSS是一个输出问题,而不是输入问题。通过HTML编码器运行一切不会解决所有问题。有

你好

我想对ASP.NET MVC 2站点上的所有用户输入进行html编码,但默认情况下是这样。可以在模型活页夹级别的任何位置执行此操作吗

如果我禁用操作的输入验证——我将需要对其他每个值进行html编码。如果我保持ASP.NET请求验证处于打开状态--它将抛出错误“从客户端检测到一个潜在危险的请求。表单值”

另外,我在输出数据(语法)时确实使用编码,但我也希望在发布数据时对所有内容进行编码


提前谢谢

不幸的是,XSS是一个输出问题,而不是输入问题。通过HTML编码器运行一切不会解决所有问题。有没有


一般来说,输入应在使用前进行验证。您无法预测所有输入将如何使用,最终会损坏数据

您可以覆盖
DefaultModelBinder

为什么?仅仅解决“潜在危险”错误?这样做是错误的——如果您确信不需要,请禁用该错误。在提交表单之前,您需要使用JavaScript进行编码,并且您不能依赖客户端来运行该脚本。不,我希望默认情况下在服务器上对我的所有字段执行HTML编码(并有选择地允许对某些字段进行编码)。原因是用户可以尝试发布HTML,他不应该得到错误——如果他看到HTML是编码的,那就更好了。对服务器上的所有内容进行HTML编码完全没有意义。请不要这样做。使用
x.Foo)%%>
并保持快乐。为什么要对用户输入进行编码?您需要对输出进行编码。编码输入是最好的方法。因为一旦它以编码格式进入数据库,我们就不想担心它何时被输出。我不知道你为什么要这样做,但这肯定是可能的