Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Go vet не поможет... Как сделать свой анализатор кода для Go? - 28.09

menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V5341. A cookie was created without enabling the 'Secure' attribute. This may lead to the exposure of sensitive data.

17 Сен 2026

Анализатор обнаружил создание cookie без атрибута Secure.

Эта потенциальная уязвимость относится к следующим категориям OWASP Top 10:

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

public void servletExample(
  HttpServletRequest request, 
  HttpServletResponse response
) {
    Cookie cookie = new Cookie("name", getCookieValue());
    cookie.setSecure(false);
    response.addCookie(cookie);
    ....
}

Объект cookie создаётся и помещается в ответ сервера. При этом после его создания был вызван метод Cookie#setSecure со значением false, явно указывающий не выставлять значение Secure создаваемым cookie.

Отсутствие значения Secure в заголовке сookie приводит к тому, что такой объект сookie будет передаваться от браузера к серверу как по HTTPS, так и по незащищённому HTTP протоколу. Последнее приводит к тому, что сookie с чувствительными данными будут передаваться в незащищённом виде. И злоумышленник, получивший незашифрованный запрос, сможет эти чувствительные данные извлечь без необходимости их расшифровывать.

Чтобы не дать возможности браузеру отправлять сookie по незащищённому HTTP протоколу, необходимо выставить соответствующий атрибут при создании объекта Cookie:

public void servletSecureExample(
  HttpServletRequest request, 
  HttpServletResponse response
) {
    Cookie cookie = new Cookie("name", getCookieValue());
    cookie.setSecure(true);
    response.addCookie(cookie);
    ....
}

Тогда заголовок сookie будет содержать атрибут Secure, который укажет браузеру, что сookie можно отправлять только по HTTPS протоколу.

Также учитывайте различные API, используемые для создания Cookie-объектов. Большинство из таких API при создании объекта по умолчанию не выставляют флаг Secure. Например, в следующих примерах также будут неявно создаваться "небезопасные" сookie:

public void insecureCookie(
  HttpServletRequest request, 
  HttpServletResponse response
) {
    Cookie cookie = new Cookie("name", getCookieValue());
    response.addCookie(cookie);
    ....
}

public void insecureResponseCookie(
  HttpServletRequest request, 
  HttpServletResponse response
) {
    ResponseCookie cookie = ResponseCookie
                 .from("name", getCookieValue())
                 .build();
    response.addHeader(HttpHeaders.SET_COOKIE, cookie.toString());
    ....
}