Я знаю, что этому вопросу уже почти десять лет, но я включаю свои 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);