2010-11-26 4 views
0

그것의 쉬운 단지 단지 하나 개의 양식 필드에서이 작업을 수행 할 수있는 방법이,하나의 요소에 대해 ValidatInput (false)을 설정할 수 있습니까?

[HttpPost, ValidateInput(false)] 
public ActionResult Signup(SignupModel model) 
{ 
    ... 
} 

같은 속성을 접선하지만 궁금 입력을 검증 할 수없는 우리의 행동을 설정하는 방법? 실제의 모든 항목이 아님 <form>

또는이 항목을 사용하고 다른 모든 필드를 올바르게 인코딩해야합니까?

답변

0

아니요ValidateInput을 사용하여 값을 '인코딩'해야합니다. 값을 인코딩하지 않습니다. 일부 값을 완전히 거부합니다. 그리고 심지어 그것을 사용하더라도 은 어떤 식 으로든 사용자가 입력하고 사이트에 표시 한 모든 값을 인코딩해야합니다.

사실, 그 때문에 - 나는 그 검증을 직접 사용하지 못했습니다. 예를 들어 내가 한 모든 작업이 유효성 검사에 의존했다면 사람들은 예제 HTML을 보여 주려고하는 것과 같이 매우 기본적인 것들을이 양식과 같이 입력 할 수 없었을 것입니다.

심지어 MSDN 설명서와 내가 읽은 모든 책에서 ASP.NET 유효성 검사는 이 아니라고 말하면은 가능한 모든 악성 입력으로부터 사용자를 보호합니다. 따라서 본질적으로 이 아니라에 의존하여 사용자를 보호 할 수 있습니다. 표시하고있는 값을 인코딩해야합니다 (표시해야하는 경우에만 인코딩해야합니다. 그렇지 않으면 이중 인코딩 된 모든 버그가 표시됩니다)

+0

것은 양식의 한 필드에서만 html 코드를 받아 들일 필요가 있으며 어떤 경로를 취해야하는지 잘 모르겠습니다. – balexandre

+0

어디에서나 'validate'를 사용하지 마십시오. 당신이 내장 검증을 사용하는지 여부에 관계없이, 당신은 여전히 ​​* 다른 필드를 인코딩해야합니다. 하지만 다른 분야의 인코딩을 수행하고 있는지 확인하십시오. –

+0

그래서'ValidateInput (true)'를 사용하면 모든 값을 인코딩 할 필요가 없습니다. 맞습니까? – balexandre

0

MVC3을 사용하면 SkipRequestValidation을 지정하여 모델에 특성을 적용 할 수 있습니다.

+0

태그는 특별히 'asp.net-mvc-2'라고 말합니다. – balexandre

관련 문제