2017-05-19 4 views
-3

면도기 html 헬퍼/모델을 사용하지 않는 간단한 웹 양식이 있다고 가정 해보십시오.면도기 HTML 도우미를 사용하지 않을 때 입력이 유효하지 않은 이유는 무엇입니까?

<form id="survey-form" action="@Url.Action("Submit", "Questionnaire")" method="post"> 
    <textarea name="1" form="survey-form"> 
</form> 

위의 양식은 나의 텍스트 입력으로 제어

[HttpPost] 
[ValidateAntiForgeryToken] 
[ValidateInput(true)] 
public ActionResult Submit() 
{ 
    NameValueCollection nvc = Request.Form; 
    return View(); 
} 

<script>alert("xss!")</script>에서 다음 시험 방법에 게시물 컨트롤러에 의해 검증되지 않습니다

$("#survey-form").submit(); 

사용하여 제출됩니다. 일반적으로 "A potentially dangerous Request.Form was detected from the client ..." 예외가 발생할 것으로 예상됩니다.

이 메서드는 예외 나 메시지를 반환하지 않으며 실행할 수 있습니다.

MSDN 설명서

HttpRequest에 클래스는 쿠키, 양식 및 QueryString을 등록를 통해 액세스 요청 컬렉션에 유효성 검사를 수행할지 여부를 추적하기 위해 입력 검증 플래그를 사용했다.

잠재적으로 위험한 값으로 게시 된 양식을 게시하고 처리하고 있으므로 입력 내용의 유효성을 확인할 것으로 기대됩니다.

ASP.NET MVC 규칙을 사용하지 않고도 사용자 입력의 유효성을 검사하기 위해 ValidateInput 특성과 같은 간단한 MVC 도우미를 여전히 사용할 수 있습니까? (예 : 면도기 html 헬퍼 및 모델 등을 사용하여 양식 만들기)

편집 : 실제로 컨트롤러에서 내 액션에 도달하는 값의 혼란이있는 것으로 보이므로 여기에 값이 보여주는 스크린 샷이 있습니다. 기능에 도달하십시오. enter image description here

+0

입력에 이름 속성이 없으므로 값이 게시되지 않습니다. –

+0

@StephenMuecke 게시 한 예제는 간략하게하기 위해 매우 단축 된 버전입니다. 제안 해 주셔서 감사합니다. 내 실제 프로젝트에서 값이 전달되고 NameValueCollection으로 속성을 읽을 때 내 로컬 창에서 값을 찾을 수 있습니다. 그러나 검증은 없습니다. –

+0

그럼 실제 코드를 보여주세요! –

답변

2

Submit ActionResult의 인수로 FormCollection을 포함해야한다고 생각합니다.

+0

안녕 Majdi를 추가했다면 던져 질 것입니다.나는 당신이 제안한대로했으나, 입력은 아직 유효하지 않습니다. 나는 두려워합니다. –

+0

Foo ActionResult에 인수가 없으며 입력 필드에 이름 속성이 없기 때문에 데이터가 컨트롤러에 게시되지 않습니다. –

+0

업데이트 된 제안을 사용해보십시오. –

관련 문제