code

URL 라우팅, 이미지 처리기 및 "잠재적으로 위험한 요청"입니다.경로 값"

starcafe 2023. 5. 8. 22:21
반응형

URL 라우팅, 이미지 처리기 및 "잠재적으로 위험한 요청"입니다.경로 값"

저는 이 문제를 꽤 오랫동안 경험해 왔고 여기에 어떤 생각을 위해 질문을 게시함으로써 이 문제의 진상을 규명하기로 결정했습니다.다음 위치에 있는 .net 4 웹 사이트에 이미지 처리기가 있습니다.

https://www.amadeupurl.co.uk/ImageHandler.ashx?i=3604 (개인 정보 보호를 위해 삭제된 도메인)

이제 이것은 잘 작동하고 웹 서버의 이미지를 문제 없이 제공합니다. URL에 액세스하면 이미지가 로드되고 예외가 생성되지 않기 때문에 문제가 없습니다.그러나 누군가가 어제 이 정확한 URL을 방문했고 다음과 같은 방법으로 예외가 제기되었습니다.

Exception Generated
Error Message:
A potentially dangerous Request.Path value was detected from the client (?).
Stack Trace:
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig() at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

Technical Information:
DATE/TIME: 23/01/2013 03:50:01
PAGE: www.amadeupurl.co.uk/ImageHandler.ashx?i=3604

오류 메시지를 이해했습니다. 문제가 아닙니다. 여기서 오류 메시지가 생성되는 이유를 이해할 수 없습니다. 설상가상으로 이미지 로드 링크를 클릭하면 예외가 없습니다.저는 URL 라우팅을 사용하고 있으며, 이로 인해 다음 코드에 문제가 발생할 경우 무시되도록 핸들러를 등록했습니다.

routes.Ignore("{resource}.ashx")

다른 이유로 오류가 발생하거나 다른 방법을 시도해야 하는지 잘 모르겠습니다.

As.Net 4.0+에는 매우 엄격한 기본 제공 요청 유효성 검사가 포함되어 있으며, 일부는 XSS 공격에 사용될 수 있는 URL의 잠재적인 위험 문자입니다.다음은 URL의 기본 잘못된 문자입니다.

< > * % & : \ ?

구성 파일에서 이 동작을 변경할 수 있습니다.

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

아니면 돌아가세요.Net 2.0 검증:

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

매우 일반적인 잘못된 문자는 다음과 같습니다.%따라서 만약 URL(공격, 웹 브라우저 또는 일부 비표준 브라우저)이 이스케이프되고 있다면 다음과 같은 정보를 얻을 수 있습니다.

www.amadeupurl.co.uk/ImageHandler.ashx/%3Fi%3D3604

이 대신에:

www.amadeupurl.co.uk/ImageHandler.ashx/?i=3604

참고:%3F의 이스케이프 문자입니다.?이 문자는 Asp에 의해 유효하지 않은 것으로 간주됩니다.Net 요청 유효성 검사기에서 예외를 발생시킵니다.

A potentially dangerous Request.Path value was detected from the client (?).

오류 메시지에서 탈출하지 못한 버전의 문자(%3F)를 볼 수 있지만, 이는?다시.

다음은 요청 유효성 검사 및 처리 방법에 대한 좋은 기사입니다.

심지어 저도 이 문제에 직면했지만, 저는 실수로 URL에 ? 대신 &을 입력했습니다.

예:

example.com/123123&parameter1=value1&paameter2=value2

하지만 실제로는 다음과 같아야 합니다.

example.com/123123?parameter1=value1&paameter2=value2

매우 오래된 스레드이지만 작동합니다.

return RedirectToAction("MyAction", new { @myParameterName = "MyParameterValue" });

요청이 다른 컨트롤러로 이동하는 경우 작업 이름 뒤에 컨트롤러 이름을 추가할 수도 있고, 쉼표로 연결하여 쿼리 문자열 매개 변수를 추가할 수도 있습니다.

언급URL : https://stackoverflow.com/questions/14475913/url-routing-image-handler-a-potentially-dangerous-request-path-value

반응형