Как узнать, является ли файл cookie на стороне сервера HttpOnly

У меня есть приложение, использующее Spring Boot, где я установил файл cookie HttpOnly. В браузере я могу проверить его и увидеть, что он установлен как HttpOnly. При этом я избегаю использования javascript на стороне клиента.

Но нужно ли мне что-то делать на стороне сервера при чтении файла cookie? Насколько я понимаю, я не могу использовать javascript для чтения файла cookie, но я все равно могу создать файл cookie без HttpOnly с тем же именем и значением, что и файл HttpOnly, просто используя плагин для браузера. На стороне сервера, не нужно ли мне проверять файл cookie и является ли он HttpOnly?

Я попытался сделать это, просто получив список файлов cookie из запроса, но, похоже, все они имеют разные поля, установленные на значение по умолчанию. Единственные поля, которые я могу прочитать, это имя и значение файла cookie.

Это ожидаемое поведение?


person Juan Vega    schedule 16.08.2017    source источник


Ответы (1)


Это действительно заданное поведение.

Заголовок Set-Cookie передает клиенту информацию, подобную HttpOnly. Но вызов от клиента к серверу использует заголовок Cookie, который включает только имена и значения файлов cookie (но не дополнительную информацию). Поэтому сервер не может получить эту информацию только из заголовка Cookie. Его просто нет.

Это указано в RFC 6265 «Механизм управления состоянием HTTP» в разделе 5.4 «Заголовок cookie». :

   4.  Serialize the cookie-list into a cookie-string by processing each
       cookie in the cookie-list in order:

       1.  Output the cookie's name, the %x3D ("=") character, and the
           cookie's value.

       2.  If there is an unprocessed cookie in the cookie-list, output
           the characters %x3B and %x20 ("; ").

Поскольку информация отсутствует, для нее часто устанавливается значение по умолчанию.

person pscheid    schedule 20.01.2021