Как установить cookie в PHP apps
как HttpOnly cookies
?
Как настроить cookie HttpOnly на PHP?
Ответ 1
- Для ваших файлов cookie см. этот ответ.
- Для собственного скриптового файла PHP (
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" );
Ответ 2
Для собственных скриптов сеансов PHP на Apache:
добавьте это в свою конфигурацию Apache или .htaccess
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>
Это также можно установить в script, если оно вызывается до session_start()
.
ini_set( 'session.cookie_httponly', 1 );
Ответ 3
Помните, что HttpOnly не останавливает межсайтовый скриптинг; вместо этого он нейтрализует одну возможную атаку и в настоящее время делает это только в IE (FireFox предоставляет файлы HttpOnly cookie в XmlHttpRequest, а Safari вообще не соблюдает его). Во что бы то ни стало, включите HttpOnly, но не теряйте даже час фильтрации выходных данных и тестирования fuzz в торговле для него.
Ответ 4
Обратите внимание, что 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 файлы cookie сеанса не выполняются по умолчанию либо.
Ответ 5
Объяснение здесь из Ilia... 5.2, хотя
httpOnly поддержка флага cookie в PHP 5.2
Как указано в этой статье, вы можете установить заголовок самостоятельно в предыдущих версиях PHP
header("Set-Cookie: hidden=value; httpOnly");
Ответ 6
Вы можете указать его в установленной функции cookie см. руководство по php
setcookie('Foo','Bar',0,'/', 'www.sample.com' , FALSE, TRUE);
Ответ 7
<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE);
//HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
?>
Ответ 8
Вы можете использовать это в файле заголовка.
// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);
Таким образом, все будущие файлы cookie будут использовать httponly.
Ответ 9
Правильный синтаксис команды php_flag
php_flag session.cookie_httponly On
И помните, что только первый ответ с сервера установил cookie и здесь (например, вы можете увидеть директиву HttpOnly. Поэтому для тестирования удалять файлы cookie из браузера после каждого запроса на тестирование.