在 php 中设置安全会话 cookie

Setting secure session cookies in php

设置会话 cookie 的语法

session_set_cookie_params($lifetime, $path, $domain, $secure, true);

Q1。像下面这样设置会话 cookie 是安全的还是需要做更多的事情?

session_set_cookie_params('3600', 'www.example.com', isset($_SERVER["HTTPS"]), true);

Q2。设置会话(从安全角度来看)cookie 的理想生命周期应该是多长?

Q3。如果我决定将我的网络管理文件夹转移到子域,那么上面的代码是否需要更改?

A1:你上面的代码看起来很理想,只要它遵循 PHP 文档页面,否则我们说谁;

A2:这完全取决于它的用途。在银行业务中,有些人喜欢在不活动的几分钟内终止会话。在游戏或社交网络中,这些设置往往更加宽松和宽松,以给用户更多的回旋余地;

A3:是的,您必须更改 cookie 以反映新的子域管理员更改。如果您想设置一个全局 cookie(适用于所有子域):

session_set_cookie_params('3600', 'example.com', (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')? true : false, true);

希望对您有所帮助!

define('SESSION_EXPIRE',3600*6);

define('SESSION_EXPIRE_RELOAD',1800);

ini_set('session.gc-maxlifetime',SESSION_EXPIRE);

ini_set('session.name','prl');

ini_set('session.cookie_httponly',true);

ini_set('session.cookie_secure',false);

session_set_cookie_params(SESSION_EXPIRE);

session_start();

[How do I expire a PHP session after 30 minutes?

    sessionRegenerate(){
        if (!isset($_SESSION['SESSION_CREATED']))
        {
            $_SESSION['SESSION_CREATED'] = time();
        } 
        else if (( SESSION_EXPIRE -(time() - $_SESSION['SESSION_CREATED']) ) < SESSION_EXPIRE_RELOAD && ( SESSION_EXPIRE -(time() - $_SESSION['SESSION_CREATED']) ) > 0 ) 
        {
            session_regenerate_id(true);
            $_SESSION['SESSION_CREATED'] = time();
        }
    }