代码之家  ›  专栏  ›  技术社区  ›  Prashant Yadav

捕获所有查询参数、模型数据、路由到操作方法以防止XSS攻击

  •  0
  • Prashant Yadav  · 技术社区  · 8 年前

    我想捕获用户输入的所有参数、路由信息和其他表单数据,以便对其进行编码以防止XSS攻击我的网站。我想在全球范围内这样做,而不是针对某个特定的控制器。如何在WebAPI2.0.net中实现这一点?

    1 回复  |  直到 8 年前
        1
  •  2
  •   P. Grote    8 年前

    我想你需要一个代理人来满足你的需要。

    public class RequestHandler : DelegatingHandler
    {
        protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            //Validate the uri and or encode it
            Console.WriteLine(request.RequestUri);
    
            //Validate the content
            Console.WriteLine(request.Content.ReadAsStringAsync().Result);
    
            // If you like, create a whole new request or cancel it.
            return base.SendAsync(request, cancellationToken);
        }
    }
    

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {            
            config.MessageHandlers.Add(new RequestHandler());
    
            // Web API routes
            config.MapHttpAttributeRoutes();
    
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
    

    https://www.asp.net/media/4071077/aspnet-web-api-poster.pdf

    快乐的编码!

    推荐文章