2013-04-05 68 views
1

为了避免通过输入字段进行脚本注入,我在我的控制器操作中将ValidateInputAttribute设置为false。在我看来,我使用<%:而不是<%=避免在输入字段中注入脚本

我想知道的是,除了上面还有更通用的方法吗?

回答

2

要通过输入字段避免脚本注入,我设置 ValidateInputAttribute假

这恰好有你正在试图达到什么样的效果相反。它允许脚本注入。当您将其设置为false时,基本上会禁用请求值的验证。

而在我的意见,我使用的<%:而不是<%=

这在视图中显示时是正确的方式HTML编码的所有数据。当然,如果您使用HTML助手(如Html.DisplayFor或Html.EditorFor,您不需要使用<%:,因为这些助手已经负责正确编码输出)。

+0

但是,如果您将ValidateInputAttribute设置为true,那么您将得到异常:从客户端检测到潜在危险的Request.Form值。那就是,我不想要的。我只是想阻止执行潜在的脚本 – Djave 2013-04-05 13:51:07

+1

是的,这很正常。 ASP.NET显式不允许发布这些字符,因为它们可用于XSS注入。当然,如果你正确地对输出进行HTML编码,你可以安全地禁用这个验证。 – 2013-04-05 13:54:02

+0

谢谢,但这是正确的方式,我在做什么?现在我有数百个视图,我必须用<%:替换<%=。有没有另一种方式来做到这一点更通用? – Djave 2013-04-05 14:06:28