Jus*_*lik 59 .net asp.net elmah web-config
我无法确保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>
Run Code Online (Sandbox Code Playgroud)
使用前导"/"我收到"无法找到资源"的响应,如果我删除前导"/"一切正常,除了可以通过在/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 - 资源不能是找到.(正是我们想要的)
小智 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>
Run Code Online (Sandbox Code Playgroud)
aar*_*man 25
如果您使用的是ASP.NET MVC,则需要让路由引擎忽略该路径.例如,如果要将elmah移动到/admin/elmah.axd,则应将以下内容添加到Global.asax.cs:
routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
Sam*_*ack 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>
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Asp.Net MVC,请添加
routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
在您的RegisterRoutes方法中.
归档时间: |
|
查看次数: |
14792 次 |
最近记录: |