Проверьте, существует ли файл cookie httponly в Javascript - PullRequest
7 голосов
/ 20 февраля 2012

Как следует из вопроса, вы можете узнать, существует ли cookie в Javascript, если это HttpOnly? Мне не нужен доступ к информации внутри нее, просто знайте, что она есть.

Немного больше информации о ситуации: изначально существовал веб-сервер, который использовал cookie в качестве токена аутентификации, и ему было присвоено значение httponly, так как он не использовался клиентом, поэтому это добавило безопасности.

Однако теперь требуется изменение, когда клиент должен знать, есть ли у него файл cookie (так как сайт может работать без входа пользователя, но если они вошли в систему (будет существовать файл cookie аутентификации), то сайт нуждается в этом. отображать одни вещи и скрывать другие.

Существуют и другие меры безопасности на веб-сервере, поэтому в сценарии, где у клиента неверный файл cookie аутентификации, нет никакого вреда, но сайт выглядит так, как будто он вошел в систему, так как он будет удалять файл cookie и отклонить пользователя.

Ответы [ 2 ]

6 голосов
/ 26 октября 2017

Вы можете косвенно проверить, существует ли оно, попытавшись установить для него значение с помощью javascript, если его нельзя установить, тогда должен присутствовать только файл cookie HTTP (или пользователь блокирует файлы cookie).

function doesHttpOnlyCookieExist(cookiename) {
   var d = new Date();
   d.setTime(d.getTime() + (1000));
   var expires = "expires=" + d.toUTCString();

   document.cookie = cookiename + "=new_value;path=/;" + expires;
   if (document.cookie.indexOf(cookiename + '=') == -1) {
       return true;
    } else {
       return false;
    }
}

[ОБНОВЛЕНИЕ 6 февраля 2018 г.] Это не работает в Firefox (работает в Chrome и Edge, возможно, в других)

6 голосов
/ 20 февраля 2012

Нет. И смотрите комментарии Роба ниже.

Посмотри, что ты, наверное, уже видел - http://en.wikipedia.org/wiki/HTTP_cookie#Secure_and_HttpOnly

Файл cookie HttpOnly недоступен через не HTTP-методы, такие как звонки через JavaScript (например, ссылка на «document.cookie») ...

Редактировать: Удалено undefined Ответ, я написал скрипт, который вы, возможно, не используете:)

...