Dot-Net

在 ASP.NET 網站中保護 Elmah

  • August 7, 2009

我在嘗試保護 ELMAH 時遇到了麻煩。我遵循了 Phil Haacked 的教程,唯一的區別是展示項目是一個 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 - 資源不能成立。(正是我們想要的)

我玩弄了 web.config 並得到了以下工作。基本上不是將 elmah.axd HttpHandler 放在一般的 system.web 中,而是將其專門添加到您的“管理員”路徑位置的 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>

引用自:https://stackoverflow.com/questions/1245364