繁体   English   中英

我如何无法在MVC4中发送响应?

[英]How can i not send a response in mvc4?

安全工程师要求在某些条件下,应用程序(MVC4 c#)不应发送响应。

这样,攻击者无法提取有关该服务的任何信息(例如,如果我们发送未经授权的常规401,则攻击者会知道其凭据无效)。

我该如何实现?

更新这不是讨论“做与不做”决定的问题。 我需要知道使用ASP.NET C#MVC在技术上是否有可能实现这一目标。

从您的操作中,返回nullEmptyResult()

...但是这似乎很可疑。 您始终可以控制返回给客户端的内容,并且发送HTTP 401是完全可以接受的。 由于实际上是不可能的,因此不存在通过HTTP进行强行强制的风险。 您所描述的听起来像是对货物安全的狂热。

做这个

public ActionResult IReturnNothing
{
    return new EmptyResult();
}

此处更多信息: 返回void的ASP.Net MVC控制器操作

好的,过了一段时间,我确实找到了一个不理想的解决方案。 我仍在调查中,暂时不会接受,但是一种方法是:

    var wrapper = (HttpContextWrapper)this.HttpContext;
    FieldInfo ctx = typeof(HttpContextWrapper).GetField("_context", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly);
    var context = (HttpContext)ctx.GetValue(wrapper);

    FieldInfo response= typeof(HttpContext).GetField("_response", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly);
    response.SetValue(context, null);

但是,这导致整个应用程序池在System.Web.HttpRuntime.ProcessRequestNotificationPrivate崩溃,并且您需要为IIS中的崩溃设置非常高的容忍度,以使其无法关闭。 但是您的服务器没有响应,客户端正在等待。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM