Jak skonfigurować używanie Plików cookie HttpOnly w PHP
Jak mogę ustawić ciasteczka w moim PHP apps
jako HttpOnly cookies
?
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" );
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 );
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.
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()
przedsession_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.
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");
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);
?>
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);
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.
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.
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