Как настроить использование файлов cookie HttpOnly в PHP
Как я могу установить куки в моем PHP apps
Как HttpOnly cookies
?
9 ответов:
- на печенье см. Этот ответ.
- на собственный файл cookie сеанса PHP (
PHPSESSID
по умолчанию), см. @РичиThe
setcookie()
иsetrawcookie()
функции, ввелhttponly
параметр, еще в темные века PHP 5.2.0, что делает это приятно и легко. Просто установите 7-й параметр в true, согласно синтаксисусинтаксис упрощен для краткости
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly ) setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
Enter
NULL
для параметров, которые вы хотите оставить значения по умолчанию. Вы также можете рассмотреть, если вы должны установить
для собственных сеансовых файлов cookie PHP на Apache:
добавьте это в свою конфигурацию Apache или.htaccess
<IfModule php5_module> php_flag session.cookie_httponly on </IfModule>
Это также может быть установлено в скрипте, если он вызывается до
session_start()
.ini_set( 'session.cookie_httponly', 1 );
имейте в виду, что HttpOnly не останавливает межсайтовые сценарии; вместо этого он нейтрализует одну возможную атаку и в настоящее время делает это только в IE (FireFox предоставляет файлы cookie HttpOnly в XmlHttpRequest, а Safari вообще не соблюдает его). Обязательно включите HttpOnly, но не бросайте даже час фильтрации вывода и тестирования fuzz в торговле для него.
обратите внимание, что файлы cookie сеанса PHP не используют
httponly
по умолчанию.для этого:
$sess_name = session_name(); if (session_start()) { setcookie($sess_name, session_id(), null, '/', null, null, true); }
несколько пунктов Примечания здесь:
- нужно позвонить
session_name()
раньшеsession_start()
- это задает путь по умолчанию'/', который необходим для Opera но какой PHP сеансовые куки-файлы не работают по умолчанию любой.
объяснение здесь от Ильи... 5.2 только
поддержка флага cookie httpOnly в PHP 5.2
Как указано в этой статье, вы можете задать заголовок в предыдущих версиях PHP
header("Set-Cookie: hidden=value; httpOnly");
<?php //None HttpOnly cookie: setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE); //HttpOnly cookie: setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); ?>
вы можете указать его в функции set cookie смотрите руководство php
setcookie('Foo','Bar',0,'/', 'www.sample.com' , FALSE, TRUE);