programing

유효성 검사 이유입력(거짓)이 작동하지 않습니까?

jooyons 2023. 5. 10. 20:50
반응형

유효성 검사 이유입력(거짓)이 작동하지 않습니까?

저는 웹 양식을 사용하여 만든 애플리케이션을 vb.net 을 사용하여 asp.net mvc 프레임워크로 변환하고 있습니다.저는 제 견해 중 하나에 문제가 있습니다.죽음의 노란 화면에 "잠재적으로 위험한 요청"이라는 메시지가 나타납니다.양식을 제출할 때 양식 값이 클라이언트에서 탐지되었습니다."저는 작은 쥐를 RTE로 사용하고 있습니다.나는 그 전망 자체를 설정했습니다.

ValidateRequest="false"

제가 지금까지 읽은 것으로 볼 때 MVC에서는 그것을 존중하지 않는다는 것을 알고 있습니다.그래서 컨트롤러 동작에도 적용했습니다.여러 가지 설정을 시도해 보았습니다.

<ValidateInput(False), AcceptVerbs(HttpVerbs.Post)> _

...그리고...

<AcceptVerbs(HttpVerbs.Post), ValidateInput(False)> _

...그리고 이것 또한...

<ValidateInput(False)> _
<AcceptVerbs(HttpVerbs.Post)> _

그게 변화를 줬는지 보려고요 하지만 전 여전히 죽음의 노란 화면을 받고 있어요이 보기 및 내 게시물과 관련된 컨트롤러의 특정 작업에 대해서만 설정하려고 합니다.내가 뭘 빼놓았나요?

asp.net 4에서는 web.config에서도 유효성 검사 모드를 구성해야 합니다.

다음을 의 자식으로 설정합니다.<system.web>요소:

<system.Web>
  ...
  <httpRuntime requestValidationMode="2.0"/>     

As.Net 4는 requestValidationMode를 다음으로 설정합니다.4.0기본적으로 HTTP 요청의 BeginRequest 단계 전에 요청 유효성 검사를 수행하도록 시스템에 알려줍니다.시스템이 요청의 유효성을 검사하지 말라는 작업 특성에 도달하기 전에 유효성 검사가 수행되므로 특성이 사용되지 않습니다.requestValidationMode="2.0"을 설정하면 asp.net 2.0 요청 유효성 검사 동작으로 되돌아가므로ValidateInput예상대로 작동하는 속성입니다.

게시할 컨트롤러 작업이 특성이 있는 작업입니까?

HttpContext와 같은 필드에 액세스할 수 있습니다.부탁한다.유효성 확인 안 됨.양식["필드 이름"]

IModelBinder 인터페이스를 구현하는 고유한 모델 바인더를 사용할 때, 이러한 사용자 정의 모델 바인더는 속성에 관계없이 항상 데이터의 유효성을 검사합니다.몇 줄의 코드를 추가하여 사용자 정의 모델 바인더가 검증을 준수하도록 할 수 있습니다.작업의 입력 필터:

// First check if request validation is required
var shouldPerformRequestValidation = controllerContext.Controller.ValidateRequest && bindingContext.ModelMetadata.RequestValidationEnabled;

// Get value
var valueProviderResult = bindingContext.GetValueFromValueProvider(shouldPerformRequestValidation);
if (valueProviderResult != null)
{
    var theValue = valueProviderResult.AttemptedValue;

    // etc...
}

이것은 Martjn Boland에 의해 매우 잘 설명되어 있습니다: http://blogs.taiga.nl/martijn/2011/09/29/custom-model-binders-and-request-validation/

이러한 제안은 [검증]을 사용해야 할 때 발생하는 버그로 인해 발생하는 문제를 해결하지 못합니다.양식 컬렉션과 함께 입력(거짓).

참조: ASP.NET MVC 3 FormCollection에서 ValidateRequest(false)가 작동하지 않습니다.

다음 코드 행을 추가합니다.

GlobalFilters.Filters.Add(new ValidateInputAttribute(false));

Application_Start() 메서드로 이동합니다.헤헤 좋아요

입력 모델을 사용하고 원하는 속성에 AllowHtml을 사용하면 차단이 해제됩니다.

public class InputModel
{
    [AllowHtml]
    public string HtmlInput { get; set; }
}

...
[ValidateInput(false)]
public async Task<ActionResult> ControllerMethod(InputModel model)
{
}

언급URL : https://stackoverflow.com/questions/807662/why-is-validateinputfalse-not-working

반응형