2012-12-28 5 views
3

servicestack rest endpoint에 값 이 포함 된 쿼리 문자열을 제출하고 있습니다.잠재적으로 위험한 서비스 요청

잠재적으로 위험한 Request.QueryString을 값은 클라이언트 (본체 = \ "<H2> \")로부터 검출 하였다 : 그 결과.

[AllowHtml] 공공 문자열 본문 :

난 당신이 [AllowHtml]를 등으로 모델의 필드를 장식하는 경우 MVC 4는, 특정 필드에 HTML 콘텐츠을 허용 할 수 있다는 사실을 알고 {얻을; 세트; }

는했지만 오류가 지속됩니다. 유효성 검사 프로세스에서 제대로 서비스 스택을 얻지 못했다는 의심의 여지가 있었기 때문에 같은 모델을 가진 순수한 MVC 4 컨트롤러를 만들어 테스트 해 보았습니다.

그러나 ServiceStack에 대한 솔루션이 필요합니다. 그들의 문서는 얇고 Google 검색은 어디에도 없습니다.

답변

9

ASP.NET 응용 프로그램 내에서 ServiceStack 서비스를 호스팅하고있는 것으로 보입니다.

당신은 전체 응용 프로그램에 대한 요청 유효성 검사를 사용하지 않도록하기 위해 당신의 web.config 파일의 <system.web> 섹션에 다음을 추가 할 수

:

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

그리고 당신은 단지 특정 엔드 포인트에 대한 요청 유효성 검사를 사용하지 않으려면 전체가 아닌 응용 프로그램은의 Web.config에 <location> 태그를 사용

<location path="hello"> 
    <system.web> 
     <httpRuntime requestValidationMode="2.0" /> 
    </system.web> 
</location> 

이 응용 프로그램의 모든 /hello 엔드 포인트에 대한 요청 유효성 검사를 사용할 수 없게됩니다. 예를 들어 /hello?Body=%3Ch2%3E은 작동하지만 /bar?Body=%3Ch2%3E은 작동하지 않습니다.

ASP.NET의 요청 유효성 검사에 대한 자세한 내용은 following MSDN article에서 확인할 수 있습니다.

ServiceStack 서비스를 자체 호스팅하는 경우 분명히 걱정할 필요가 없습니다.

+0

감사합니다. 순수 MVC (속성 또는 성능)에 대한 솔루션과 비슷한 솔루션을 기대했지만, 그렇게 될 것으로는 생각하지 않습니다. 적어도 나는 문제의 종점으로 그것을 제한 할 수있다. –

+0

이것은 ASP.NET의 제한 사항/기능 일뿐입니다. ServiceStack 서비스를 자체 호스팅하면이 오류가 발생하지 않습니다. ServcieStack의 저자는 요청 dtos에 대해 ASP.NET 고유의 특성을 도입하고 싶지는 않다고 생각합니다. ASP.NET에 연결하기 때문입니다. 또한 ASP.NET에서는 내 대답에 표시된대로 특정 끝점에 대한 요청 유효성 검사를 사용하지 않도록 설정할 수 있습니다. –

관련 문제