我正在使用Elmah登录ASP.NET MVC项目,并且我收到了路径/prx2.php的大量404错误,而这些路径又将散列作为查询字符串参数传递。
我认为这是一个试图查找漏洞的扫描程序。因为我没有运行PHP,所以我很安全!但是,我想阻止ELmah报告此错误。
在没有实际创建/prx2.php页面的情况下排除这些类型的错误的最佳方法是什么。我也想在配置文件中执行此操作,而不是按预算执行。
有什么想法吗?
答案 0 :(得分:18)
Elmah支持错误过滤 - Error Filtering link
这应该为您解决问题。您可以通过代码定义过滤器 - 在Global.asx文件中,或在elmah本身的xml配置中定义
答案 1 :(得分:4)
步骤1:配置配置部分以包含elmah errorFilter
部分:
<configSections>
<sectionGroup name="elmah">
<!-- ... -->
<!-- this is the important part -->
<section name="errorFilter" requirePermission="false"
type="Elmah.ErrorFilterSectionHandler, Elmah"/>
</sectionGroup>
</configSections>
步骤2:在<elmah>
部分配置过滤器本身。
<elmah>
<!-- ... -->
<errorFilter>
<test>
<and>
<equal binding="HttpStatusCode" value="404" type="Int32" />
<!-- you may want to consider something more generic like pattern="/.+[.]php" -->
<regex binding="Context.Request.Url" pattern="/prx2.php" />
</and>
</test>
</errorFilter>
</elmah>
步骤3:在应用程序模块中包含Elmah.ErrorFilterModule
包括http模块的现代(IIS7 +)版本:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<!-- ... -->
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"
preCondition="managedHandler" />
</modules>
</system.webServer>
旧版(较旧的IIS)版本包括http模块:
<system.web>
<httpModules>
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
</system.web>