我怎么能不在mvc4中发送回复?

时间:2014-07-08 03:40:27

标签: c# asp.net asp.net-mvc-4

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

这样一来,攻击者无法提取有关该服务的任何信息(例如,如果我们发送通常的401未经授权,则攻击者知道他们的凭据不起作用)。

我怎样才能做到这一点?

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

3 个答案:

答案 0 :(得分:4)

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

......但这看起来很可疑。您始终可以控制返回客户端的内容,并且发送HTTP 401是完全可以接受的。不存在通过HTTP进行暴力破坏的风险,因为它实际上是不可能的。你所描述的内容听起来像货物崇拜安全。

答案 1 :(得分:2)

这样做

public ActionResult IReturnNothing
{
    return new EmptyResult();
}

更多信息: ASP.Net MVC Controller Actions that return void

答案 2 :(得分:0)

好的,经过一段时间后,我找到了一个解决方案,不幸的是,这个解决方案并不理想。我现在仍在调查,现在不会接受这个,但有一种方法可以做到:

    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中的崩溃设置一个非常高的容忍度,以允许它不会关闭。但没有响应来自您的服务器,客户端只是在等待。