首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让IIS返回不允许动词的405

让IIS返回不允许动词的405
EN

Stack Overflow用户
提问于 2021-02-19 20:27:28
回答 1查看 105关注 0票数 1

一次笔试发现,选项动词从我的(ASP.NET 4/MVC 5)服务器返回数据。基于多个源,在web.config中,我已经将IIS配置为使用以下方法阻止这个谓词

代码语言:javascript
复制
<system.webServer>
    <security>
        <requestFiltering>
            <verbs>
                <add verb="OPTIONS" allowed="false"/>
            </verbs>
        </requestFiltering>
    </security>
</system.webServer>

这“工作”,但回复404 (找不到)。做笔试的安全小组说这还不够。(我的客户,谁雇用了团队,真的希望我符合他们的要求)。

这也不是我所期望和想要的:就像所说的这里一样,“请求方法是服务器已知的,但是已经被禁用,不能使用”,因此它应该返回一个405 (不允许的方法)。

但是,正如描述的这里一样,当前的响应是通过设计的:“当IIS拒绝基于此特性的请求时,记录的错误代码为404.6”。根据维基百科他们称它为“动词拒绝”。

我不明白这个。为什么-in这种情况适合(甚至标准化?)-这里没有给出"405“的响应?更重要的是:如何让IIS在不允许的动词/请求方法上使用405响应?

EN

回答 1

Stack Overflow用户

发布于 2021-02-20 14:59:31

我想出了一个解决办法,使用一些自定义错误处理。我的web.config现在

代码语言:javascript
复制
<system.webServer>
    <security>
        <requestFiltering>
            <verbs>
                <add verb="OPTIONS" allowed="false"/>
            </verbs>
        </requestFiltering>
    </security>
    <httpErrors errorMode="Custom" existingResponse="Replace" >
        <remove statusCode="404" subStatusCode="-1"/>
        <error statusCode="404" subStatusCode="6"
           path="/Error/MethodNotAllowed" responseMode="ExecuteURL"/>
        <error statusCode="404" path="/Error/NotFound" responseMode="ExecuteURL"/>
[...etc]
    </httpErrors>
</system.webServer>

我在我的ErrorController.cs中添加了一个方法

代码语言:javascript
复制
public class ErrorController : Controller
{
[...]
    public ActionResult MethodNotAllowed()
    {
        return new HttpStatusCodeResult(HttpStatusCode.MethodNotAllowed);
    }
}

这似乎是“可行的”。当我使用邮局管理员请求一个选项时,我得到405个,当我得到一个不存在的页面时,我仍然得到我的自定义404页面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66284568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档