我想阻止包含未知参数的每个请求。
例如,
localhost / application / Home / Index 或
localhost / application / Home / Index?Module = Admin
将允许访问我的索引页面。
但请求应该是包含未知参数的块,例如
本地主机/应用/主页/索引/?fakeParam =%24 {76428%2b66104%2B%27f60cec015d33e6f70fc90789dd6659ff6b83da4d49f58d1fb7d1f0ae210ff7a8de500d534018c03aa77a440178e47b9e9dc66b53afa119163810502c2d1946f2%27}
此时此查询还允许用户访问我的索引页。
我做了什么?
我试图通过方法级别的参数获取请求并阻止它,但我认为这对整个应用程序来说并不容易。
我是否可以创建一个检查请求的过滤器,如果找到任何未知参数,请求将被重定向到一般错误页面。
任何帮助或想法都会受到赞赏吗?
答案 0 :(得分:1)
您可以创建一个新的动作过滤器并将其应用于控制器。这是一个粗略的大纲。
另见:https://msdn.microsoft.com/en-us/library/dd410056(v=vs.98).aspx 并且:https://msdn.microsoft.com/en-us/library/dd410209.aspx
所以:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new MyQuerystringFilterAttribute()); //Add this
}
然后,添加一个新类:
public class MyQuerystringFilterAttribute : ActionFilterAttribute
{
//fires before the action is executed
public override void OnActionExecuting(ActionExecutingContext
filterContext)
{
// The action filter logic checking querystring and blocking if necessary
}
}
然后,在您的控制器中(在控制器级或操作:
)[MyQuerystringFilter]
public ActionResult Home() {
return View();
}