Если значение исходит из ненадежного источника, могу ли я использовать API для безопасной установки значения без дополнительной предварительной обработки?
Нет, вы не можете. API не позаботится об этом за вас. В противном случае это было бы явно указано в Javadoc. API может заранее не знать, используете ли вы файлы cookie версии 0 ( Netscape ) или версии 1 ( RFC2965 ).
Лучше всего заранее зашифровать URL-адрес имени / значения куки, чтобы вы могли убедиться, что в итоге вы получите безопасное имя / значение куки.
String safeCookieName = URLEncoder.encode(name, "UTF-8");
String safeCookieValue = URLEncoder.encode(value, "UTF-8");
response.addCookie(new Cookie(safeCookieName, safeCookieValue));
// ...
Кроме того, вы также можете использовать регулярные выражения, чтобы заранее удалить все недопустимые символы. Допускаются только буквенные символы, цифры, дефисы, подчеркивания, точки, тильды и, возможно, еще несколько (зависит от браузера!). Все остальные должны быть удалены.