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
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 ]]]] )
ini_set('session.cookie_httponly', 1);
Weitere Informationen hier in den PHP -Dokumenten
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.
Ich benutze Apache httpd über HTTPS, setze session.cookie_httponly = 1
& session.cookie_secure = 1
funktioniert für mich.
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
Wenn Sie Apache verwenden, versuchen Sie es mit Ihrem .htaccess
php_value session.cookie_httponly 1