2013-03-01 3 views
0

문자열 매개 변수가있는 ASP.NET 웹 서비스 (asmx) 함수가 있습니다. 내장 된 요청 유효성 검사는 HTML 태그를 캐치해야하며 dataType이 json (ValidateRequest = "true")으로 설정되지 않은 경우 자동 생성 된 localhost 테스트 페이지 또는 jQuery의 ajax/post를 사용할 때 작동합니다. dataType:"json"HttpRequestValidationExceptionasmx는 jQuery.ajax에서 dataType : "json"을 사용하여 게시물을받을 때 요청 유효성 검사를 건너 뜁니다.

가 트리거되지 않습니다

$.ajax({ 
    type: "POST", 
    url: "/my.asmx/SetName", 
    data: '{"name":"' + $("#name").val() + '"}', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    async: false 
}); 

내가 contentTypedataType을 제거하면 내가 예상 HttpRequestValidationException를 얻을.

이렇게하면 내 시스템이 취약해질 수 있습니다. 불행히도 WCF는 옵션이 아닙니다.

답변

0

이것은 의도적으로 설계된 것입니다. HttpRequest의 Path, PathInfo, RawUrl, Cookies, Form, QueryString 및 File 만 유효성이 검사됩니다. 사용자 정의 요청 검사기를 사용하여 헤더의 유효성을 검사 할 수도 있습니다.

당신의 contentType이 제거 할 때 요청 유효성 검사를 수행하는 이유 때문에 양식 포스트 (HttpRequest.Form)

입니다 application/x-www-form-urlencoded에 JQuery와 기본값을