0

System.Web.HttpRequestValidationException: 潜在的に危険な Request.Form 値がクライアントから検出されました

上記の例外が発生した場合、通常、以下の属性で検証リクエストを無効にすることをお勧めします

    [ValidateInput(false)]
    public ActionResult Save(string content)
    {
        System.IO.File.WriteAllText(fileName, content);
        return View();
    }

では、なぜこの検証を考え出すのでしょうか? この例外を正しく処理するには?

4

1 に答える 1

1

URL リクエスト (あなたの例: string content) に危険なキーワード :" >、?、< など... " が含まれている場合。この例外を処理したい場合 (例: これらを許可する)、サンプル コードに従うことができます。

using System;
using System.Web.Mvc;

namespace Custom {
    public class CustomValidateInput : FilterAttribute, IAuthorizationFilter {
        /// <summary>
        /// Called when authorization is required.
        /// </summary>
        /// <param name="filterContext">The filter context.</param>
        /// <exception cref="System.ArgumentNullException">filterContext</exception>
        public void OnAuthorization(AuthorizationContext filterContext) {
            if (filterContext == null) {
                throw new ArgumentNullException("filterContext");
            }

            //Set disable validation request
            filterContext.Controller.ValidateRequest = false;

            //----------Your code handle here------------//

        }
    }
}

[CustomValidateInput]
public ActionResult Save(string content)
{
    System.IO.File.WriteAllText(fileName, content);
    return View();
}
于 2013-04-17T04:39:56.757 に答える