有时我们会得到一些机器人喜欢向我们的网站发布不良信息(他们正在尝试某种反射攻击),但幸运的是,通过MVC获得的默认输入验证来阻止尝试.
这很好,但现在我们想看看机器人实际发送了什么,我们想记录这些信息.可悲的是,当一个人得到并且HttpRequestValidationException
,违规的输入被截断到无用的ala;
A potentially dangerous.... (field =
我正在尝试使用动作过滤器来检测这些异常,然后创建所有违规输入的日志,以便我们可以看到他们尝试发送的内容.
public void OnException(ExceptionContext filterContext) { HttpRequestValidationException hex = filterContext.Exception as HttpRequestValidationException; if (hex == null) { return; } // Get the data. This will explode throwing the same exception (`HttpRequestValidationException). Isn't there a way that we can get our hands on the information? string data = filterContext.HttpContext.Request.Form["field"]; ....
这让我感到奇怪和讨厌,因为我现在似乎无法找出我的攻击者真正想要的东西.是否有某些方法可以从表单数据中获取信息而不会出现异常?
是的你可以.使用HttpRequest.SaveAs
以节省整个(缓冲)HTTP请求到磁盘,然后你就可以回读.