安全工程师要求在某些条件下应用程序(MVC4 c#)不应发送响应。
这样一来,攻击者无法提取有关该服务的任何信息(例如,如果我们发送通常的401未经授权,则攻击者知道他们的凭据不起作用)。
我怎样才能做到这一点?
更新这不是一个讨论“做与否”的决定的问题。我需要知道在技术上是否可以使用ASP.NET C#MVC来实现这一结果。
答案 0 :(得分:4)
从您的操作中,返回null
或EmptyResult()
。
......但这看起来很可疑。您始终可以控制返回客户端的内容,并且发送HTTP 401是完全可以接受的。不存在通过HTTP进行暴力破坏的风险,因为它实际上是不可能的。你所描述的内容听起来像货物崇拜安全。
答案 1 :(得分:2)
这样做
public ActionResult IReturnNothing
{
return new EmptyResult();
}
答案 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中的崩溃设置一个非常高的容忍度,以允许它不会关闭。但没有响应来自您的服务器,客户端只是在等待。