V5630. OWASP. Possible cookie injection. Potentially tainted data is used to create a cookie.
Анализатор обнаружил создание cookie-объекта из данных, полученных из внешнего источника без предварительной проверки. Это может стать причиной возникновения cookie-инъекции в случае, если данные будут скомпрометированы.
Рассмотрим пример:
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
.
Сделать это можно подобным образом:
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
на основе потенциально заражённых данных, производится проверка с помощью регулярного выражения.
Данная диагностика классифицируется как: