59

ELMAHを保護しようとして問題が発生しています。私はPhilHaackedのチュートリアルに従いましたが、唯一の違いは、デモプロジェクトがWebアプリケーションであり、私のプロジェクトがWebサイトであるということです。

   <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が安全であることを確認するにはどうすればよいですか?

ありがとう。

他の人への注意:
以下のアランの答えに従うと、次のようになります。

www.mysite.com/admin/elmah.axd-認証をトリガーします
www.mysite.com/admin/asdasdasd/elmah.axd-認証をトリガーします
www.mysite.com/asdasdasd/admin/elmah.axd-リソースはできません見つかった。(まさに私たちが望んでいたもの)

4

4 に答える 4

70

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>
于 2009-08-10T16:29:52.060 に答える
25

ASP.NET MVCを使用している場合は、ルーティングエンジンにそのパスを無視させる必要があります。たとえば、elmahを/admin/elmah.axdに移動する場合は、Global.asax.csに以下を追加する必要があります。

routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");
于 2010-10-14T23:32:34.427 に答える
17

それぞれの回答からのさまざまなアドバイスをまとめてこれを機能させるためにしばらく時間を費やしてきたので、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メソッドで。

于 2011-06-07T16:56:27.623 に答える
1

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」が機能しないようにすることはできません。

上記のソリューションをIIS7.xで機能させるための提案はありますか?

ありがとう。

于 2010-08-12T12:59:08.530 に答える