Как я могу установить файлы cookie в своих PHP apps
как HttpOnly cookies
?
PHPSESSID
) см . Ответ @ richie Функции 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 )
Введите NULL
для параметров, которые вы хотите сохранить по умолчанию. Вы также можете рассмотреть возможность установки secure
параметра.
Также возможно использование более старой функции header()
нижнего уровня:
header( "Set-Cookie: name=value; httpOnly" );
Для собственных сеансов 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 предоставляет файлы HttpOnly cookie в 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()
Объяснение здесь из Илии … 5.2, хотя
httpOnly поддержка флагов cookie в PHP 5.2
Как указано в этой статье, вы можете установить заголовок самостоятельно в предыдущих версиях PHP
header("Set-Cookie: hidden=value; httpOnly");
Вы можете указать его в установленной функции cookie, см. Руководство по php
setcookie('Foo','Bar',0,'/', 'www.sample.com' , FALSE, TRUE);
<?php //None HttpOnly cookie: setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE); //HttpOnly cookie: setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); ?>
Источник
Вы можете использовать это в файле заголовка.
// setup session enviroment ini_set('session.cookie_httponly',1); ini_set('session.use_only_cookies',1);
Таким образом, все будущие cookie будут использовать httponly.
Правильный синтаксис команды php_flag
php_flag session.cookie_httponly On
И помните, что только первый ответ с сервера установил cookie и здесь (например, вы можете увидеть директиву HttpOnly. Поэтому для тестирования удалять файлы cookie из браузера после каждого запроса на тестирование.