Dav*_*Dev 47 security asp.net-mvc iis-6 elmah
我们正在使用Elmah作为我们的错误记录系统,用于即将投入生产的应用程序.它非常有用,但是如果像这样投入生产,世界上任何人都可以访问错误日志,因为他们所要做的就是访问ourdomain.com/elmah.axd
.
这显然不太理想.我原本打算将访问该页面仅限于我们公司内的IP地址,但现在我们的SysAdmins说这是不可能的.所以我在这里问我怎么能阻止访问这个资源?
我们在IIS 6上运行ASP.NET MVC应用程序.
Dar*_*rov 43
保护elmah.axd的典型方案是仅允许一些经过身份验证的用户能够访问它.但是,如果您的网站根本不使用任何身份验证,则可能不适用.
这是我建议你的:
elmah.axd
主站点上的处理程序elmah
将日志写入某些共享数据源(如共享文件,SQLite数据库甚至SQL Server)如果您决定使用SQL Server,您甚至可以从只能访问的单个内部应用程序中读取服务器场中多个Web服务器上运行的多个应用程序的日志.
Ale*_*sky 21
我发现这对于MVC应用程序是最可接受的:
http://www.beletsky.net/2011/03/integrating-elmah-to-aspnet-mvc-in.html
m0s*_*0sa 16
您可以将elmah http处理程序指向web.config中的另一个URL(例如"Secure/elmah.axd").您可以像在Web配置中的任何其他asp.net页面一样保护URL.
<httpHandlers>
...
<add verb="POST,GET,HEAD" path="/Secure/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<location path="Secure" > <!-- secure the host.com/Secure path -->
<system.web>
<authorization>
<deny users="?" />
<!-- Or anything else... -->
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
我们使用活动目录成员资格提供程序在IIS7上成功使用此方法,并且它运行良好.我不确定它是否适用于IIS6.
如果您正在使用ASP.NET成员资格,则很容易限制匿名用户对elmah.axd HttpHandler的访问,并且只允许在"Administrators"组中登录用户.我这样做了:
<configuration>
...
<location path="elmah.axd">
<system.web>
<authorization>
<allow roles="Administrators"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
Run Code Online (Sandbox Code Playgroud)
任何已登录并且"管理员"角色成员的人都可以立即访问该页面.
归档时间: |
|
查看次数: |
23508 次 |
最近记录: |