[IIS] 에러 코드(404, 500 등)에 대해 공통 오류 페이지 설정

에러 메세지에서 중요한 정보(시스템 정보, 절대경로 정보, 컴파일 소스 정보 등)가 노출되고 있는 경우, 공통 오류 페이지를 설정이 필요합니다.

 

web.config 설정

customErrors 속성은 .net 코드가 예외 (404, 403, 500 등)를 던질 때 사용되며, httpErrors 속성은 IIS 자체가 예외를 던질 때 사용됩니다.

오류 페이지가 aspx 확장자인  경우

<system.web>
  <customErrors mode="RemoteOnly" defaultRedirect="ErrorPage/ErrorPage.aspx">
    <error statusCode="404" redirect="/ErrorPage/Error404.aspx" />
    <error statusCode="500" redirect="/ErrorPage/Error500.aspx" />
  </customErrors>
</system.web>
<system.webServer>
 <httpErrors>
  <remove statusCode="404" subStatusCode="-1" />
  <remove statusCode="500" subStatusCode="-1" />
  <error statusCode="404" path="/ErrorPage/Error404.aspx" responseMode="ExecuteURL" />
  <error statusCode="500" path="/ErrorPage/Error500.aspx" responseMode="ExecuteURL" />
 <httpErrors>
</system.webServer>

mode 속성에는 3가지로 작성할 수 있습니다. Off인 경우 설정한 오류페이지가 나타나지 않게 됩니다.

  • On : 로컬 또는 원격인지에 관계 없이 사용자 지정 오류 페이지가 표시

  • Off : 로컬 또는 원격인지에 관계 없이 오류 메세지가 표시

  • RemoteOnly : 원격 방문자에게는 설정한 오류 페이지가 표시되고, 로컬 방문자에게는 오류 메세지가 표시

customErrors를 에러 상태코드에 따라 세분화하지 않고 공통으로 보여주려면 아래와 같이 작성해줍니다.

<system.web>
  <customErrors mode="RemoteOnly" defaultRedirect="ErrorPage/ErrorPage.aspx" />
</system.web>

 

오류 페이지가 html 확장자인  경우

<system.web>
  <customErrors mode="RemoteOnly" defaultRedirect="/ErrorPage/ErrorPage.html">
    <error statusCode="404" redirect="/ErrorPage/Error404.html" />
    <error statusCode="500" redirect="/ErrorPage/Error500.html" />
  </customErrors>
</system.web>
<system.webServer>
 <httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <remove statusCode="500" subStatusCode="-1" />
    <error statusCode="404" path="/ErrorPage/Error404.html" responseMode="File" />
    <error statusCode="500" path="/ErrorPage/Error500.html" responseMode="File" />
  </httpErrors>
</system.webServer>

 

2차 공격에 활용할 수 있는 정보를 표시하는 것을 방지하기 위하여, 400, 401, 403, 404, 500 등 가능한 한 웹 서비스 오류코드 모두에 적용해주도록 합시다.

 

 

<cusromError> mode 속성에 대한 자세한 설명은 아래 페이지를 참고합니다.

 

사용자 지정 오류 페이지 표시 (c #)

ASP.NET 웹 응용 프로그램에서 런타임 오류가 발생할 때 사용자에 게 표시 되는 것은 무엇 인가요? 해답은 웹 사이트의 < customErrors 구성 방법에 따라 달라 집니다. >

docs.microsoft.com

<httpErrors> 요소에 대한 자세한 설명은 아래 페이지를 참고합니다.

 

HTTP Errors

Overview The element allows you to configure custom error messages for your Web site or application. Custom error messages let you provide...

docs.microsoft.com