Перехват всех параметров запроса, данных модели, маршрутов к методам действий для предотвращения атак XSS - PullRequest
0 голосов
/ 25 октября 2018

Я думал о том, чтобы перехватить все параметры, информацию о маршруте, другие данные формы, введенные пользователем, чтобы я мог их кодировать, чтобы предотвратить атаки XSS на мой веб-сайт.Я хочу сделать это глобально, а не для одного конкретного контроллера.Как это сделать в WEB API 2.0 .net?

1 Ответ

0 голосов
/ 25 октября 2018

Я думаю, что вам нужен DelegatingHandler для ваших нужд.Каждый запрос сначала проходит через обработчик, где вы можете перехватить его:

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 }
        );
    }
}

Для получения дополнительной информации см. Плакат веб-API: https://www.asp.net/media/4071077/aspnet-web-api-poster.pdf

Удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...