首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在遇到潜在危险请求时覆盖来自WebAPI的默认HTML页面响应

如何在遇到潜在危险请求时覆盖来自WebAPI的默认HTML页面响应
EN

Stack Overflow用户
提问于 2020-08-21 04:20:31
回答 1查看 86关注 0票数 1

我有一个包含多个路由和控制器的Web API2项目。我开始测试一些相当标准的安全功能,包括SQL注入。我试图将请求参数"*“传递给具有数据库操作的路由。我立即得到了一个HTML形式的详细响应,这对我用来测试的C#控制台应用程序没有什么用处。

然而,HTML确实有我想要的唯一真正的信息,那就是异常消息和状态代码。以下是HTML的一部分:

代码语言:javascript
运行
复制
<body bgcolor="white">

            <span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>

            <h2> <i>A potentially dangerous Request.Path value was detected from the client (*).</i> </h2></span>

            <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">

            <b> Description: </b>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
...

这个安全异常是在它进入我的一个自定义控制器之前抛出的,我在这个控制器中设置了错误处理逻辑。有没有一种方法可以覆盖返回的超文本标记语言,并返回一个标准的HttpResponse或HttpResponseMessage,而无需完全替换标准安全措施,这些安全措施甚至在到达我的路由之前就已经在这里正常运行了?这是一个不明智的想法吗?这是可配置的设置吗?

EN

回答 1

Stack Overflow用户

发布于 2020-08-21 04:33:41

我将发布我在this post的帮助下得到的答案。请注意此答案下面的注释,以了解为什么我的答案略有不同。在你们有机会回答/指出我的错误之前,我不会将此答案标记为“已接受”的答案。我确实觉得我在这里尝试做的事情与问题和答案有足够的不同,它值得自己的帖子。我们将看看mob和暴徒是否同意。

实际上,我覆盖了Global.asax.cs类文件中的默认错误事件处理程序,并且只将HttpException.Message写入Response

代码语言:javascript
运行
复制
protected void Application_Error(object sender, EventArgs e)
{
    var exception = Server.GetLastError();
    if (exception is HttpException)
    {
        Server.ClearError();
        Response.Clear();
        Response.StatusCode = (int)HttpStatusCode.BadRequest;
        Response.Write(exception.Message);
        HttpContext.Current.ApplicationInstance.CompleteRequest();
        return;
    }
}

我甚至可以去掉if语句,以这种方式返回每个异常。老实说,我还没有遇到任何其他问题。

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

https://stackoverflow.com/questions/63512607

复制
相关文章

相似问题

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