programing

ASP.NET 웹사이트의 Elmah 보안

telebox 2023. 7. 11. 22:51
반응형

ASP.NET 웹사이트의 Elmah 보안

ELMAH를 확보하는 데 어려움을 겪고 있습니다.저는 Phil Hacked의 튜토리얼을 따랐지만, 유일한 차이점은 데모 프로젝트는 웹 애플리케이션이고 제 프로젝트는 웹 사이트라는 것입니다.

   <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 앞에 디렉토리 이름을 추가하여 인증을 무시할 수 있습니다.도끼의

예를 들어 선행 "/"가 없는 경우

www.mysite.com/admin/elmah.axd - 인증을 트리거합니다.
www.mysite.com/asdasdasd/admin/elmah.axd - 인증을 트리거하지 않고 ELMAH를 표시합니다.

원격으로 로그를 볼 수 있는 기능을 유지하면서 ELMAH가 안전한지 확인하려면 어떻게 해야 합니까?

감사해요.

다른 사용자에 대한 참고:
아래 앨런의 답변을 따르면 다음과 같은 결과가 나옵니다.

www.mysite.com/admin/elmah.axd - 인증을 트리거합니다.
www.mysite.com/admin/asdasdasd/elmah.axd - 인증을 트리거합니다.
www.mysite.com/asdasdasd/admin/elmah.axd - 리소스를 찾을 수 없습니다.(우리가 원했던 것을 포기함)

저는 web.config를 가지고 놀았고 다음을 작동시켰습니다.기본적으로 엘마를 넣는 대신에.일반 시스템에서 axd HttpHandler.웹, 특히 시스템에 추가합니다."admin" 경로 위치의 웹.

<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>

그리고 만약 당신이 As를 사용한다면요.NetMVC, 추가

routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");

RegisterRoutes 메서드에 있습니다.

IIS 7.5 윈도우즈 서버 2008에는 system이라는 다른 섹션이 있습니다.웹 서버.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

반응형