에러 메세지에서 중요한 정보(시스템 정보, 절대경로 정보, 컴파일 소스 정보 등)가 노출되고 있는 경우, 공통 오류 페이지를 설정이 필요합니다.
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 속성에 대한 자세한 설명은 아래 페이지를 참고합니다.
<httpErrors> 요소에 대한 자세한 설명은 아래 페이지를 참고합니다.