Définissez httpOnly et sécurisez sur le cookie PHPSESSID en PHP

Quelle est la méthode recommandée pour définir httponly et sécuriser les indicateurs sur le cookie PHPSESSID?

J'ai trouvé http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-httponly . de meilleures suggestions?

Merci

27
demandé sur Steve 2011-07-26 00:23:06

6 réponses

, À mon avis, le mieux serait: http://www.php.net/manual/en/function.session-set-cookie-params.php

void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] )
12
répondu Johan 2011-07-25 21:01:38

Je n'ai pas pu faire fonctionner le drapeau sécurisé avec session_set_cookie_params(...), donc ce que j'ai fait, c'est qu'après session_start() avoir défini le cookie PHPSESSID, Je l'ai réinitialisé avec setcookie(...). Le paramètre final, true, fait que le cookie a un indicateur sécurisé.

<?php  
session_start();  
$currentCookieParams = session_get_cookie_params();  
$sidvalue = session_id();  
setcookie(  
    'PHPSESSID',//name  
    $sidvalue,//value  
    0,//expires at end of session  
    $currentCookieParams['path'],//path  
    $currentCookieParams['domain'],//domain  
    true //secure  
);  
?>

Lorsque j'ai vérifié le cookie PHPSESSID dans Firefox, sa propriété 'Send for' était définie sur 'encrypted connections only' et sa propriété 'Expires' était définie sur 'At end of session'.

19
répondu allieferr 2011-08-09 12:44:04
ini_set('session.cookie_httponly', 1);

Plus d'informations ici sur les docs PHP

18
répondu user2741089 2014-06-16 12:15:03

J'utilise Apache httpd sur HTTPS, set session.cookie_httponly = 1 & session.cookie_secure = 1 ça marche pour moi.

2
répondu hyjiacan 2017-08-25 02:44:42

Si vous utilisez Apache, essayez ceci sur votre .htaccess

php_value session.cookie_httponly 1
0
répondu Trac Nguyen 2016-11-30 03:01:00

En utilisant .htaccess à cet effet ralentit simplement votre application.

Je pense qu'il vaut mieux ajouter cet extrait dans votre fichier de configuration principal ( exemple de configuration.php ) ou d'inclure le fichier ( exemple mondial.php)

    // Prevents javascript XSS attacks aimed to steal the session ID
    ini_set('session.cookie_httponly', 1);

    // Prevent Session ID from being passed through  URLs
    ini_set('session.use_only_cookies', 1);

Si vous utilisez https:// au lieu de http://, faites aussi

     // Uses a secure connection (HTTPS) 
     ini_set('session.cookie_secure', 1); 

Cette méthode convient également à ceux qui n'ont pas accès à php.ini

0
répondu MarcoZen 2018-07-16 08:50:42