Elmah允许任何人访问错误日志,即使使用授权属性

时间:2016-10-05 18:12:59

标签: c# web-config elmah elmah.mvc

我最近实施了Elmah错误记录。我创建了一个SQL Server数据库,其中记录了错误,一切都很好。我一直在尝试保护Elmah,以便允许Admin角色访问example.com/elmah。现在任何人都可以访问它。

我已经浏览了几个SO帖子,以及其他在线博客,例如thisthisthis,但我仍然无法解决我的问题。

这就是我目前在Web.Config中设置Elmah的方式:

 <appSettings>
    <add key="elmah.mvc.disableHandler" value="false" />
    <add key="elmah.mvc.disableHandleErrorFilter" value="false" />
    <add key="elmah.mvc.requiresAuthentication" value="false" />
    <add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
    <add key="elmah.mvc.allowedRoles" value="*" />
    <add key="elmah.mvc.allowedUsers" value="*" />
    <add key="elmah.mvc.route" value="elmah" />
    <add key="elmah.mvc.UserAuthCaseSensitive" value="true" />
  </appSettings>

 <system.web>
    <authentication mode="None" />
    <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>
      <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>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>

  <elmah>
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah" applicationName="MyApplication"/>
    <security allowRemoteAccess="yes" />
  </elmah>

  <location path="elmah.axd">
    <system.web>
      <httpHandlers>
        <add verb="POST,GET,HEAD"
             path="elmah.axd"
             type="Elmah.ErrorLogPageFactory, Elmah" />
      </httpHandlers>
      <authorization>
        <allow roles="Admin"/>
        <deny users="*" />
      </authorization>
    </system.web>
    <system.webServer>
      <handlers>
        <add name="ELMAH"
             verb="POST,GET,HEAD"
             path="elmah.axd"
             type="Elmah.ErrorLogPageFactory, Elmah"
             preCondition="integratedMode" />
      </handlers>
    </system.webServer>
  </location>

我试过玩它。以下是我迄今为止没有运气的尝试:

<appSettings>我尝试将value更改为Admin,就像这样<add key="elmah.mvc.allowedRoles" value="Admin" />,然后我注释掉下一行(allowUsers)。那没用。

<authorization>我尝试将其更改为此以查看它是否至少会拒绝所有人,但这不起作用:

  <authorization>
    <deny users="*" />
  </authorization>

然后我尝试将<allow roles="Admin"/>更改为<allow users="admin">,但这也无效。 Admin角色存在,admin用户也存在。

在找到解决方法之前,我刚刚将<security allowRemoteAccess="yes" />设置为<security allowRemoteAccess="no" />

很抱歉这篇长篇文章,我只是想确保所有内容都包含在内。

我很感激将此锁定的所有帮助。 :)

0 个答案:

没有答案