it-swarm.com.de

Setzen Sie httpOnly und sicher auf PHPSESSID-Cookie in PHP

Was ist die empfohlene Methode zum Setzen von httponly und sicheren Flags für das PHPSESSID-Cookie?

Ich habe http://www.php.net/manual/de/session.configuration.php#ini.session.cookie-httponly gefunden. Irgendwelche besseren Vorschläge?

vielen Dank

27
Steve

Meiner Meinung nach wäre das Beste: http://www.php.net/manual/de/function.session-set-cookie-params.php

void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] )
12
Johan
ini_set('session.cookie_httponly', 1);

Weitere Informationen hier in den PHP -Dokumenten

19
user2741089

Ich konnte das sichere Flag nicht mit session_set_cookie_params(...) verwenden. Was ich also tat, war, nachdem session_start() das PHPSESSID-Cookie gesetzt hatte, es mit setcookie(...) zurückgesetzt wurde. Der letzte Parameter, true, gibt dem Cookie ein sicheres Flag.

<?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  
);  
?>

Beim Überprüfen des PHPSESSID-Cookies in Firefox wurde die Eigenschaft "Send for" auf "Nur verschlüsselte Verbindungen" und die Eigenschaft "Expires" auf "Am Ende der Sitzung" gesetzt.

18
allieferr

Ich benutze Apache httpd über HTTPS, setze session.cookie_httponly = 1 & session.cookie_secure = 1 funktioniert für mich.

2
hyjiacan

Die Verwendung von .htaccess für diesen Zweck verlangsamt lediglich Ihre Anwendung. 

Ich denke, es ist besser, dieses Snippet in Ihre Hauptkonfigurationsdatei (Beispiel config.php) oder Haupt-Include-Datei (Beispiel global.php) einzufügen.

    // 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);

Wenn Sie https: // anstelle von http: // verwenden, tun Sie dies auch

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

Diese Methode eignet sich auch für diejenigen, die keinen Zugriff auf php.ini haben

0
MarcoZen

Wenn Sie Apache verwenden, versuchen Sie es mit Ihrem .htaccess

php_value session.cookie_httponly 1
0
Trac Nguyen