Подтвердить что ты не робот

Как настроить cookie HttpOnly на PHP?

Как установить cookie в PHP apps как HttpOnly cookies?

4b9b3361

Ответ 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 из браузера после каждого запроса на тестирование.