Как узнать, что cookie был установлен с помощью javascript или кода сервера? - PullRequest
3 голосов
/ 16 августа 2010

У меня есть специальные печенья. Мне нужно, чтобы эти куки были установлены только по коду сервера. Поэтому мне нужно выяснить, что cookie был установлен с помощью javascript или кода сервера. Возможно ли это?

Ответы [ 2 ]

3 голосов
/ 16 августа 2010

Технически говоря, вы не можете определить эту информацию.Один из способов попытаться состоит в том, чтобы хэшировать значение, используя как sha1 / md5, и использовать сеанс на стороне сервера для хранения того же значения и подтверждения совпадения хэшей.

Не могли бы вы объяснить немного больше о том, что вы пытаетесь сделать, и, возможно, какое-то решение возможно.

0 голосов
/ 13 февраля 2019

Я знаю, что этому вопросу уже почти десять лет, но я включаю свои 2 цента на всякий случай. ;)

Как ответили Крис и Марк Б., нет никакого способа отличить то, где создан файл cookie. Это верно и по сей день.

Чтобы решить проблему, не позволяющую Javascript получать определенный файл cookie: вы можете установить cookie как HttpOnly, а поддерживающие браузеры не позволят установить его из Javascript, это не предотвратит многие способы вмешательства cookie, такие как «Человек на середине», атакует, но полезен, чтобы усложнить ситуацию.

Чтобы установить файл cookie сеанса по умолчанию как HttpOnly в PHP, убедитесь, что он есть в вашем файле php.ini (и убедитесь в этом, запустив phpinfo();):

session.cookie_httponly = On

Чтобы установить файл cookie HttpOnly из вашего приложения:

// Do it with
setcookie($name, $value, $expires, $path, $domain, $secure, true);

// OR
setrawcookie($name, $value, $expires, $path, $domain, $secure, true);

// OR with PHP 7.3+
setcookie($name, $value, ['httponly' => true]);

// OR with PHP 7.3+
setrawcookie($name, $value, ['httponly' => true]);

// OR by sending the raw header
//   Set-Cookie: <name>=<value>[; <Max-Age>=<age>][; expires=<date>][; domain=<domain_name>][; path=<some_path>][; Secure][; HttpOnly]
header("Set-Cookie: {$name}={$value}; HttpOnly", false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...