2011-01-18 8 views
9

저희 웹 사이트에 오류가 발생했을 때 일반적인 오류 메시지를 표시하는 데 사용되는 페이지가 있습니다. 오류가 있음을 나타내는 레이블을 표시하는 것 외에는 전혀 기능이 없습니다.AspxErrorPath in Custom Error 페이지

여기 내 문제가 있습니다. 클라이언트가 보안 검토를 실행하여 쿼리 문자열의 URL로 인해 오류 페이지에 피싱이 포함되어 있음을 알았으나 이제는이 문제를 고려하지 않지만 질문, 쿼리 문자열을 제거하고 싶습니다. ? 오류가 발생하면, 그것은 DefaultErrorPage.aspx aspxerrorpath =/WEBSITE1/LastPage.aspx

로 이동

<customErrors mode="On" defaultRedirect="~/DefaultErrorPage.aspx"> 
</customErrors> 

나는이 문제를 방지 할 수 있습니다 방법 :

내 Web.config의 항목이있다 ? 그러나 쿼리가 포함 된 경우 페이지로 리디렉션 할 수는 있지만 추가 리디렉션 대신 쿼리 문자열을 방지하는 방법을 찾고 있습니다.

답변

7

당신은/잡기 대신 Global.asax 파일의 모든 오류를 처리하고 오류 처리 프로세스 자신의 제어권을해야 할 것

protected void Application_Error(object sender, EventArgs e) 
    { 
     //Exception ex = Server.GetLastError(); 

     Server.Transfer("~/DefaultErrorPage.aspx"); 
    } 
+0

Microsoft가 =를 추가 할 때까지 작동합니다. – jaekie

+0

불행히도 Application_Start에 오류가 있으면이 기능이 작동하지 않습니다. "이 컨텍스트에서 요청을 사용할 수 없습니다." –

+0

@ noah1989 "작동하지 않음"이란 보안 감사인이 어떤 종류의 크로스 사이트 스크립팅 취약점이 있다고 생각하도록 허용한다는 의미입니까? 또는이 경우 오류를 진단하기 위해 다른 메커니즘을 사용해야 만합니까? –

2

가 리디렉션을 수행 할 수 있습니다. 한 가지 방법은 사용자 지정 오류 리디렉션을 제거하고 전역 적으로 Application_Error 메서드를 사용하는 것입니다. 그런 다음 쿼리 문자열 인수없이 필요에 따라 사람을 지시 할 수 있습니다.

또 다른 옵션은 ASP.NET의 죽음 오류 노란색 화면을 방지하도록 설계된 ELMAH입니다. 그런 다음 친숙한 오류를 조정할 수 있으며 오류 처리 코드를 작성하는 것에 대해 걱정하지 않아도됩니다.

세 번째 방법은 보안 팀에게 ASP.NET 작동 방법을 교육하고 "보안 문제"가 합법적인지 여부를 확인하는 것입니다. 그렇다고해서 어쨌든 위의 옵션 중 하나를 수행하게 만들지는 않을 것입니다.

+0

ELMAH를 사용하고 싶습니다. 집 프로젝트에서 사용하지만 내 고객은 제 3 자의 99 %와 오픈 소스의 제 3 자의 100 %를 제한합니다. – jaekie

3

빠른 수정으로 추가 한 "?" aspxerrorpath 제거에서 나를 위해 일한 defaultRedirect 설정의 끝에.

또한, 나는 system.web의 customErrors에 설정으로 같은 문제를 얻고 있었다, 같은 솔루션 일 :

<customErrors mode="On" defaultRedirect="~/SystemError.aspx"> 
    <error statusCode="403" redirect="~/Home.aspx?"/> 
    <error statusCode="404" redirect="~/Home.aspx?"/> 
</customErrors> 

를 또는 않는 동일의 system.webServer 설정에 :

<httpErrors errorMode="Custom"> 
    <remove statusCode="403" subStatusCode="-1" /> 
    <error statusCode="403" path="/Home.aspx?" responseMode="Redirect" /> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="/Home.aspx?" responseMode="Redirect" /> 
</httpErrors>