ASP.NET 웹 사이트에서 Elmah 보안
ELMAH를 보호하는 데 문제가 있습니다. 필 Haacked의 튜토리얼 을 따랐지만 데모 프로젝트는 웹 애플리케이션이고 내 프로젝트는 웹 사이트라는 점만 다릅니다.
<add verb="POST,GET,HEAD" path="/admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
<location path="admin">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
선행 "/"를 사용하면 "자원을 찾을 수 없습니다."라는 응답을받습니다. 선행 "/"를 제거하면 /admin/elmah.axd 앞에 디렉토리 이름을 추가하여 인증을 우회 할 수 있다는 점을 제외하고 모든 것이 잘 작동합니다. .
예를 들어 선행 "/"없이
www.mysite.com/admin/elmah.axd-인증을 트리거합니다.
www.mysite.com/asdasdasd/admin/elmah.axd- 인증을 트리거 하지 않고 ELMAH를 표시합니다.
로그를 원격으로 볼 수있는 기능을 유지하면서 ELMAH가 안전한지 어떻게 확인할 수 있습니까?
감사.
기타 참고 사항 :
아래 Alan의 답변을 따르면 다음과 같은 결과가 나타납니다.
www.mysite.com/admin/elmah.axd-인증 트리거 www.mysite.com/admin/asdasdasd/elmah.axd-인증
트리거
www.mysite.com/asdasdasd/admin/elmah.axd-리소스는 녹이다. (정확히 우리가 원했던)
나는 web.config를 가지고 놀았고 다음과 같이 작동했습니다. 기본적으로 elmah.axd HttpHandler를 일반 system.web에 넣는 대신 "admin"경로 위치의 system.web에 구체적으로 추가하십시오.
<location path="admin">
<system.web>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd"
type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
ASP.NET MVC를 사용하는 경우 라우팅 엔진이 해당 경로를 무시하도록해야합니다. 예를 들어 elmah를 /admin/elmah.axd로 이동하려면 Global.asax.cs에 다음을 추가해야합니다.
routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");
각 답변의 다양한 조언을 함께 패치하여이 작업을 수행하는 데 시간을 보냈으므로 모든 IIS 버전에서 작동하는 완전한 솔루션을 모았습니다.
다음은 각 web.config 섹션에 필요한 사항입니다.
<configuration>
<configSections>
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>
</configSections>
<elmah>
<!-- set allowRemoteAccess="0" for extra security -->
<security allowRemoteAccess="1"/>
</elmah>
<system.web>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
</system.webServer>
<location path="admin">
<system.web>
<authorization>
<!--<allow users="Admin" /> -->
<deny users="?" />
</authorization>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
</handlers>
</system.webServer>
</location>
</configuration>
Asp.Net MVC를 사용하는 경우
routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");
RegisterRoutes 메서드에서.
IIS 7.5 Windows Server 2008에는 system.webServer라는 또 다른 섹션이 있습니다. ELMAH가 작동하려면 다음을 추가해야합니다.
<system.webServer>
<handlers>
<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</handlers>
</system.webServer>
몇 가지 변형을 시도했지만 '/blah/elmah.axd'가 작동하지 않도록 위의 솔루션을 사용할 수 없습니다.
위의 솔루션이 IIS 7.x에서 작동하도록하는 제안 사항이 있습니까?
감사.
참고 URL : https://stackoverflow.com/questions/1245364/securing-elmah-in-asp-net-website
'Programing' 카테고리의 다른 글
Android 레이아웃 : 스크롤 동작이있는 Viewpager 내부의 Vertical Recyclerview 내부의 Horizontal Recyclerview (0) | 2020.12.08 |
---|---|
Lisp 실행 파일 (0) | 2020.12.08 |
jemalloc은 어떻게 작동합니까? (0) | 2020.12.08 |
분을 변경할 수 있습니다. (0) | 2020.12.07 |
Android에서 방향이 변경 될 때 활동을 다시 시작하지 않는 방법 (0) | 2020.12.07 |