在PHP中设置httpPnly并保护PHPSESSID cookie

Ste*_*eve 28 php security session-cookies

什么是在PHPSESSID cookie上设置httponly和安全标志的推荐方法?

我找到了http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-httponly.有更好的建议吗?

谢谢

小智 20

ini_set('session.cookie_httponly', 1);
Run Code Online (Sandbox Code Playgroud)

有关 PHP文档的更多信息

  • 注:还有一个`session.cookie_secure`设置. (6认同)

all*_*err 18

我无法获得安全标志session_set_cookie_params(...),所以我做的是,在session_start()设置PHPSESSID cookie之后,我重置它setcookie(...).最后一个参数true,使cookie具有安全标志.

<?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  
);  
?>
Run Code Online (Sandbox Code Playgroud)

当我在Firefox中检查PHPSESSID cookie时,其"发送"属性设置为"仅加密连接",其"过期"属性设置为"会话结束时".


Joh*_*han 13

在我看来,最好的将是: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 ]]]] )
Run Code Online (Sandbox Code Playgroud)


Hei*_*ein 6

自PHP >=7.0以来更优雅的解决方案

session_start(['cookie_lifetime' => 43200,'cookie_secure' => true,'cookie_httponly' => true]);
Run Code Online (Sandbox Code Playgroud)

会话开始

会话启动选项