Jak skonfigurować używanie Plików cookie HttpOnly w PHP

Jak mogę ustawić ciasteczka w moim PHP apps jako HttpOnly cookies?

Author: Alive to Die, 2008-08-31

9 answers

  • dla twoje ciasteczka, zobacz tę odpowiedź.
  • dla własnego sesyjnego pliku cookie PHP (PHPSESSID, domyślnie), zobacz @richie ' s answer

The setcookie() oraz setrawcookie() funkcje, wprowadzono parametr httponly, w ciemnych wiekach PHP 5.2.0, co czyni to przyjemnym i łatwym. Po prostu ustaw siódmy parametr na true, zgodnie ze składnią

składnia funkcji uproszczona dla zwięzłości

setcookie(    $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )

Wpisz NULL dla parametry, które chcesz zachować jako domyślne. Możesz również rozważyć, czy powinieneś ustawić parametr secure.

Możliwe jest również użycie starszego, niższego poziomu header() funkcja:

header( "Set-Cookie: name=value; httpOnly" );
 78
Author: Cheekysoft,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:06

Dla własnych plików sesyjnych PHP na Apache:
dodaj to do swojej konfiguracji Apache lub .htaccess

<IfModule php5_module>
    php_flag session.cookie_httponly on
</IfModule>

Można to również ustawić w skrypcie, o ile zostanie wywołane przed session_start().

ini_set( 'session.cookie_httponly', 1 );
 99
Author: richie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-30 17:06:24

Należy pamiętać, że HttpOnly nie zatrzymuje skryptów między stronami; zamiast tego neutralizuje jeden możliwy atak, a obecnie robi to tylko na IE (FireFox ujawnia pliki cookie HttpOnly w XmlHttpRequest, a Safari w ogóle go nie honoruje). Oczywiście włącz HttpOnly, ale nie upuść nawet godziny filtrowania wyjściowego i testowania fuzz w zamian za to.

 13
Author: tqbf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-10 21:40:41

Zauważ, że pliki cookie sesji PHP domyślnie nie używają httponly.

Aby to zrobić:

$sess_name = session_name();
if (session_start()) {
    setcookie($sess_name, session_id(), null, '/', null, null, true);
}

Kilka uwag tutaj:

  • Musisz zadzwonić session_name() przed session_start()
  • to także Ustawia domyślną ścieżkę na'/', która jest konieczne dla Opery, ale jakie PHP pliki cookie sesji domyślnie nie działają ani jedno, ani drugie.
 11
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-30 14:57:19

Wyjaśnienie od Ilii... 5.2 tylko choć

Obsługa znaczników cookie HttpOnly w PHP 5.2

Jak wspomniano w tym artykule, możesz ustawić nagłówek samodzielnie w poprzednich wersjach PHP

header("Set-Cookie: hidden=value; httpOnly");
 5
Author: Polsonby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-31 14:35:02
<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE); 

//HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); 

?>

Źródło

 5
Author: Marius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-31 14:36:36

Można go określić w ustawieniu funkcji cookie patrz instrukcja php

setcookie('Foo','Bar',0,'/', 'www.sample.com'  , FALSE, TRUE);
 5
Author: Re0sless,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-31 14:37:06

Możesz użyć tego w pliku nagłówkowym.

// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);

W ten sposób wszystkie przyszłe pliki cookie sesji będą używać httponly.

  • Aktualizacja.
 3
Author: Marius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-23 22:24:21

Prawidłowa składnia polecenia php_flag to

php_flag  session.cookie_httponly On

I należy pamiętać, tylko pierwsza odpowiedź z serwera ustawić plik cookie i tutaj (na przykład można zobaczyć dyrektywę "HttpOnly". Tak więc do testowania Usuń pliki cookie z przeglądarki po każdym zapytaniu testowym.

 1
Author: Mareg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-19 20:51:10