1

在共享服务器上的病毒攻击添加了 180 个指向客户网站的链接并且我花了数小时手动删除它们之后,我想通过包含一个通用的 410 处理程序来阻止任何类似的未来攻击。我首先修改 global.asax.cs 以在存在查询字符串时发出 410 错误,因为此应用程序不使用它们:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        string queryParms = Request.Url.Query;
        if (queryParms.Length > 0)
        {
            Response.StatusCode = 410;
            Response.End();
        }
    }

这对于我本地测试机器上的 IE11 和 Chrome 以及共享服务器上的 IE11 工作正常(显示默认错误页面);但 Chrome 显示一个空白页面。

我的 ISP 通知我自定义错误页面将解决此问题,并提供了一个链接到标题为410 a一堆 IIS 中的 html 页面的 SO 帖子。

根据 SO 发布说明,我在根文件夹中创建了一个自定义 410Error.aspx 页面,并在后面的代码中设置了 Response.StatusCode = 410,我将 web.config 修改为 SO 示例,如下所示:

<system.webServer> 
    <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL">
       <remove statusCode="410" subStatusCode="-1" />
       <error statusCode="410" path="/Error410.aspx" responseMode="ExecuteURL" />
    </httpErrors>
</system.webServer>

我还将自定义错误设置为 true:

<system.web>
    <customErrors mode="On"  />
    <compilation debug="true" targetFramework="4.0"/>
    ...
</system.web>

不幸的是,Chrome 在本地机和共享服务器上仍然显示空白页面,IE11 显示默认的 410 错误页面。IIS似乎找不到Error410.aspx,所以我尝试使用几种不同的路径,包括没有运气的绝对路径。我错过了什么?

4

0 回答 0