2014-06-10 2 views
0
이 주제에 대한 많은 질문이 있습니다

하지만 우리의 특별한 케이스를 발견하지 못했다는 ... 잠재적으로 위험한 문자 (Request.Path하지!)

우리는 한 번 생산 사이트를 실행하고 있습니다 잠시 - 하루에 약 5-10 번 - 잠재적으로 위험한 Request.Path 값에 대한 오류 알림을받습니다. 이상한 것은 실제 "위험한"문자가 요청 경로가 아니라 매개 변수에 있다는 것입니다.

우리는 다음과 같은 값을 얻을 요청 개체로보고 :

Message: A potentially dangerous Request.Path value was detected from the client (?). (System.Web.HttpException) 

Stacktrace: 
    at System.Web.HttpRequest.ValidateInputIfRequiredByConfig() 
    at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context) 

그러나보기의 모든 것을 내 관점이 보인다에서 :

HttpContext.Current.Request.Url.AbsolutePath --> /relative/path/to/page 
HttpContext.Current.Request.Url.Query  --> ?param1=value&param2=value 

ASP.NET이 PARAMS에서 ?에 대해 불평 (이 URL은 실제로 유효한 URL이며 브라우저에 입력하면 작동합니다.)

우리는 또한 클라이언트 IP 및 클라이언트 사용자 에이전트를 추적하고 있으며 대부분 일부 크롤러와 관련이 있습니다. 이러한 오류를 유발하는 잘못된 요청을 작성하고 있습니까?

+0

이 오류가 발생했음을 어떻게 압니까? 오류의 원인은 누구입니까? 공개적으로 사이트에 액세스 할 수 있습니까? 정확히 어떤 요청이 그 메시지를 제기합니까? – CodeCaster

+0

Global.asax에 오류 처리기를 추가하고 오류에 대한 전자 메일 알림을 수신했습니다. 예,이 사이트는 공개적으로 액세스 할 수 있습니다. 요청은 질문에 명시된대로 - 그 밖에 도움이 될만한 것이 있습니까? – jor

답변

2

아마도 asp.net 4.0 이상을 사용하고있을 것입니다. 이전 버전보다 더 까다 롭습니다. 다음 문자는 기본적으로 필터링 :

< > * % & : \ ? 

당신은 당신의 Web.config에 다음을 변경할 수 있습니다

<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,:,\,?" /> 

그것은 크롤러 또는 일부 브라우저처럼 %를 포함하는 문자를 탈출 사용 않는 것이 될 수있다 요청을 보낼 때. 주제에 대한 더 많은 읽을 거리 : Experiments In Wackiness Allowing Percents Angle brackets And Other Naughty Things In The ASPNETIIS RequestURL

+0

좋은 지적 네덜란드 과일;). url이'/ relative/path/to/page ?? param1 = value & param2 = value' (이중'?')와 같은 것일 수 있습니까? –

+0

아니요, 문제는 필터링 된 문자 자체가 아니라 'Request.Path'에는 나타나지 않지만 'Query'에는 나타나지 않습니다. 그리고 그들은 거기에 절대적으로 허용됩니다. – jor

+0

@PatrickHofmann : 아니요, URL에 이중 '?'이 없습니다. – jor

관련 문제