Comment définir les cookies dans mes applications PHP en tant que cookies HttpOnly?
Réponses
Trop de publicités? Pour les cookies de session propres à PHP sur Apache:
ajoutez ceci à votre configuration Apache ou .htaccess
<IfModule php5_module>
php_value session.cookie_httponly true
</IfModule>
Cela peut également être défini dans un script, tant qu'il est appelé avant session_start()
.
ini_set( 'session.cookie_httponly', 1 );
- Pour vos cookies, voir cette réponse.
- Pour PHP propre cookie de session (
PHPSESSID
, par défaut), voir @euhiemf réponse
L' setcookie()
et setrawcookie()
fonctions, introduit l' httponly
de paramètre, de retour dans les âges sombres de l'PHP 5.2.0, faisant de cette agréable et facile. Il suffit de régler la 7e paramètre à true, selon la syntaxe
Syntaxe de la fonction simplifiée pour des raisons de concision
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
Entrez NULL
pour les paramètres que vous souhaitez rester en tant que par défaut.
Vous pouvez également envisager si vous devriez être le réglage de l' secure
paramètre.
Il est également possible en utilisant l'ancienne, de niveau inférieur header()
fonction de:
header( "Set-Cookie: name=value; httpOnly" );
Sachez que HttpOnly n'arrête pas le script intersite; au lieu de cela, il neutralise une attaque possible et ne le fait actuellement que sur IE (FireFox expose les cookies HttpOnly dans XmlHttpRequest, et Safari ne l’honore pas du tout). Bien sûr, activez HttpOnly, mais ne laissez pas tomber même une heure de filtrage de sortie et de test fuzz dans le commerce pour cela.
Explication ici d'Ilia ... 5.2 seulement si
Prise en charge de l'indicateur de cookie httpOnly dans PHP 5.2
Comme indiqué dans cet article, vous pouvez définir vous-même l'en-tête dans les versions précédentes de PHP
header("Set-Cookie: hidden=value; httpOnly");