﻿# V5630\. OWASP\. Possible cookie injection\. Potentially tainted data is used to create a cookie\.

Анализатор обнаружил создание cookie\-объекта из данных, полученных из внешнего источника без предварительной проверки\. Это может стать причиной возникновения cookie\-инъекции в случае, если данные будут скомпрометированы\.

Рассмотрим пример:

```cpp
public void ChangeCookie()
{
  String cookieValue = Request.Form["userRole"];

  Response.Cookies.Add(
    new HttpCookie(WebLocalizationConfiguration.CookieName, cookieValue)
    {
      Expires = Clock.Now.AddYears(2),
      Path = Request.ApplicationPath
    }
  );
  ....
}
```

В данном случае в `HttpResponse` добавляется новый объект класса `HttpCookie`, который инициализируется на основе данных из внешнего источника — `Request.Form`\. Использование данных без какой\-либо проверки или валидации может привести к тому, что злоумышленники смогут повлиять на работу приложения\.

Чтобы обезопасить код от cookie\-инъекции, необходимо проверить данные, которые используются для инициализации объекта класса `HttpCookie`\. 

Сделать это можно подобным образом:

```cpp
public void ChangeCookie()
{
  String cultureValue = Request.Form["userRole"];
  
  if (!Regex.IsMatch(cultureValue, DataValidationPattern))
    return;

  Response.Cookies.Add(
    new HttpCookie(WebLocalizationConfiguration.CookieName, cultureValue)
    {
      Expires = Clock.Now.AddYears(2),
      Path = Request.ApplicationPath
    }
  );
  ....
}
```

В данном случае, прежде чем инициализировать объект `HttpCookie` на основе потенциально заражённых данных, производится проверка с помощью регулярного выражения\.