相关疑难解决方法(0)

从客户端检测到潜在危险的Request.Form值

每当用户在我的Web应用程序中发布包含<>在页面中的内容时,我都会抛出此异常.

我不想进入关于抛出异常或崩溃整个Web应用程序的聪明性的讨论,因为有人在文本框中输入了一个字符,但我正在寻找一种优雅的方法来处理这个问题.

捕获异常并显示

发生错误请返回并重新输入整个表单,但这次请不要使用<

对我来说似乎不够专业.

禁用post validation(validateRequest="false")肯定会避免此错误,但它会使页面容易受到许多攻击.

理想情况:当发回包含HTML限制字符的回发时,Form集合中的已发布值将自动进行HTML编码.所以.Text我的文本框的属性将是something & lt; html & gt;

有没有办法可以从处理程序中执行此操作?

asp.net validation asp.net-mvc html-encode request.form

1437
推荐指数
32
解决办法
94万
查看次数

ASP.NET MVC 3 ValidateRequest(false)不使用FormCollection

仅供参考我使用的是.NET 4.0/MVC 3.

在我的控制器中,以下是我的代码:

[HttpPost]
[ValidateInput(false)]
public ViewResult Edit(ContentTemplateView contentTemplateView, FormCollection collection)
Run Code Online (Sandbox Code Playgroud)

当我不输入HTML时,一切正常,所以我知道正在触发正确的控制器.另外,我在web.config文件中正确设置了以下内容:

<httpRuntime requestValidationMode="2.0"/>
Run Code Online (Sandbox Code Playgroud)

当我包含FormCollection(这个特定的控制器需要)时,我才会遇到这个问题.那我究竟做错了什么?

[我已经完成了以下问题的建议,只要没有FormCollection,它们就可以工作.他们都没有提供包含FormCollection的解决方案]

asp.net asp.net-mvc-3

18
推荐指数
2
解决办法
3万
查看次数

ValidateInput属性似乎不适用于ASP.NET MVC

我试图绕过"潜在危险的Request.Form值"错误,我没有运气.是的,是的,我已经阅读了所有其他与StackOverflow相关的问题,但似乎没有一个问题让我更接近答案.我正在使用[ValidateInput(false)]所有相关的控制器动作......我已经多次检查过了.我正在使用ValidateRequest='false'所有相关的ASPX视图.

我正在使用ASP.NET MVC 2 Preview 1,但我不认为这是一个问题,因为错误在框架中生成较低; Page.ProcessRequest确切.我看不到任何我做错的事情,我甚至设置<page validateRequest='false'>在web.config中并且也没有解决它.

asp.net asp.net-mvc

17
推荐指数
2
解决办法
8148
查看次数

从客户端检测到一个潜在危险的Request.Form值(wresult ="<trust:RequestSecuri ...")

使用WIF时,我也收到了请求验证错误.我被正确地发送到STS,但在回来的路上,我得到了这个验证错误.

我遵循了所有指示.

<httpRuntime  requestValidationMode="2.0" />
Run Code Online (Sandbox Code Playgroud)

校验!

    [ValidateInput(false)]
Run Code Online (Sandbox Code Playgroud)

校验!

<pages validateRequest="false" >
Run Code Online (Sandbox Code Playgroud)

校验!

我尝试了一个自定义验证器,但它永远不会被实例化.

错误堆栈:

[HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (wresult="trust:RequestSecuri...").]
   System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection) +11396740
   System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection) +82
   System.Web.HttpRequest.get_Form() +212
   Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.IsSignInResponse(HttpRequest request) +26
   Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.CanReadSignInResponse(HttpRequest request, Boolean onPage) +145
   Microsoft.IdentityModel.Web.WSFederationAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs args) +108
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +270
Run Code Online (Sandbox Code Playgroud)

有什么建议?

wif single-sign-on asp.net-mvc-3

16
推荐指数
1
解决办法
2万
查看次数

我无法关闭ASP.NET MVC控制器的请求验证

我试图通过执行以下操作关闭控制器中所有操作方法的请求验证:

[ValidateInput(false)]
public class MyController : Controller
{
    ...
Run Code Online (Sandbox Code Playgroud)

我正在使用的参考说这是可能的,并告诉我这样做,但由于某种原因,它不起作用.

如果我通过文本框提交任何html(甚至是简单的<b>标签),我会收到错误消息:

从客户端检测到一个潜在危险的Request.Form值(text = <b>").

通过将属性附加到单个方法也无法正常工作.

如何禁用控制器的请求验证?

编辑

我在VS2008内置测试服务器.

.net c# asp.net asp.net-mvc request-validation

10
推荐指数
2
解决办法
1万
查看次数

如何获取导致MVC中"从客户端检测到潜在危险的Request.Form值"的表单值?

我有一个MVC3应用程序,它有一个自定义HandleErrorAttribute,以便我可以通过电子邮件发送错误.我经常得到"从客户端检测到一个有潜在危险的Request.Form值",但它只显示导致异常的表单值的前几个字符.我希望看到输入的整个表单值,以便在输入是恶意的或用户意外时更好地了解.但是,当我尝试在HandleErrorAttribute中提取表单值时,它会抛出相同的错误!任何想法如何从Request.Form获取表单值而不导致我的异常处理程序中的验证?

public class HandleErrorLogAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext context)
    {
        base.OnException(context);

        //Record Error
        string errorDetails = HttpUtility.HtmlEncode(context.Exception.ToString());

        // Throws "otentially dangerous..." error here
        foreach (var key in context.RequestContext.HttpContext.Request.Form.AllKeys)
        {
            errorDetails += key + "=" + HttpUtility.HtmlEncode(context.RequestContext.HttpContext.Request.Form[key]);
        }

        // Send Email with errorDetails
    }
}
Run Code Online (Sandbox Code Playgroud)

c# error-handling asp.net-mvc request.form

5
推荐指数
1
解决办法
2969
查看次数