我在 asp.net web 表单项目中使用 Elmah 作为错误记录系统。但是在 elmah 中,任何人都可以通过在 url 中粘贴 /elmah.axd 来读取错误日志
而且我无法检查授权,因为我没有使用 ASP.NET Membership。
你能用 IP 安全 (IIS7 +) 锁定它吗?
<location path="elmah.axd">
<system.web>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on using ASP.NET authorization securing ELMAH.
-->
</system.web>
<system.webServer>
<security>
<ipSecurity allowUnlisted="false" >
<add ipAddress="127.0.0.1" allowed="true"/>
</ipSecurity>
</security>
<handlers>
<add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
</handlers>
</system.webServer>
</location>
我发现最简单的选择是将 web.config 中的 elmah.axd 位更改为没有人会猜到的其他内容。例如 myerrors.axd (显然选择更晦涩的东西)。
那么只有你知道页面名称是什么才能查看错误....