ASP.NET MVC ValidateInput (False) XVal 및 [regularexpression] 데이터 분석이 중지됩니다.

StackOverflow https://stackoverflow.com/questions/1038102

문제

Regex Validator에 의해 양식 필드의 "<"문자를 가로 채고 싶습니다. 문제를 3 단계로 설명하겠습니다.

1 단계: "<"문자가 포함 된 필드가있는 양식을 제출하려고 할 때 ASP.NET에서 예상대로 "잠재적으로 위험한 요청 ..."를 얻습니다.

2 단계: ASP.NET의 RequestValidation을 피하기 위해 컨트롤러의 업데이트 메소드를 [validateInput (false)]로 장식합니다.

예상대로 작동합니다. 이제 오류없이 "<"문자를 게시 할 수 있습니다.

3 단계: 데이터 알 냄비와 함께 XVal을 사용합니다. 예를 들어, [필수] 또는 [StringLength (255)]는 예상대로 작동합니다.

그러나 내가 사용할 때 : [regularexpression( "^[^<>]*$", errormessage = "특수 문자가 허용되지 않습니다.")], "잠재적 인 Dangeros 요청 ..."오류가 다시 나타납니다., validateInput (false)] 지침에도 불구하고.

무슨 일이야? REGEX ValidAton을위한 더 간단한 방법이 있지만 [ValidateInput (false)]가 있으십니까? 물론 컨트롤러가 아닌 모델에 유효성 검사 코드를 사용하고 싶습니다.

도움이 되었습니까?

해결책

아니요, MVC 1 + xval의 문제였습니다. MVC 2에서 검증은 예상대로 작동합니다 (그리고 더 이상 XVal이 필요하지 않음) - Alex42

봇이 이것을 계속해서 맨 위로 밀고있는 것 같습니다. 당신은 그것이 알 수 있도록 받아들이는대로 답변을 표시 할 수 있습니까?

다른 팁

나는 xval & nhibernate.validator를 사용하고 있으며이 동작을 재현하려고했지만 유효성 검사기가 클라이언트 측에 묶여 있기 때문에 클라이언트 측 유효성 검사를 지나서는 가치를 얻을 수 없었습니다. JavaScript를 비활성화하면 서버 측 유효성 검사에 도달했으며 정규 표현식 유효성 검사기에 의해 잡혔습니다.

데이터 주석 검증 속성 및 모델 바인더를 사용하여 동일한 것을 시도했는데 과거를 만들었습니다.

오류를 일으키는 다른 일이 있어야합니다. 더 도움이되지 못해 죄송합니다!

간단한 규칙을 사용하여 확인하십시오 이 방법. 이것은 적어도 방정식에서 xval을 제거 할 수 있습니다. 문제가 지속되면 다음과 관련이 있다고 제안합니다.

  • MVC의 기본 모델 바인더 구현
  • 또는 릴리스에서 MVC보기 엔진에 문제가 있습니다. < 그것이 없을 때

필드 인 경우 캐릭터 '<또는>'를 찾아 제거하기 위해 루틴을 작성하고 제거 할 수 있습니다. 서브 스트링을 사용하여이를 달성 할 수 있습니다. 이것이 도움이되기를 바랍니다

  • 테스트 할 텍스트 길이까지 루프 사용 (in int i = 1, i <= 텍스트 길이, ++))
  • 각 문자가 1을 시작하여 1 (예 : ch = text.substring (i, 1)
  • '<or>'을 제외하고 각 읽기 문자를 TMP 문자열에 추가하십시오.

정적 방법을 가정합니다 Escape() 당신을 위해 이것을 해결할 것입니다.

  Regex r = new Regex(Regex.Escape(expression));

이 라인을 web.config에 넣으십시오

<httpRuntime requestValidationMode="2.0" />

이것은 ASPNET 4.0의 변화입니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top