在php中设置安全会话cookie

时间:2016-01-04 16:48:34

标签: php security session cookies session-cookies

设置会话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。如果我决定将我的网络管理员文件夹转移到子域,那么上述代码是否需要更改?。

2 个答案:

答案 0 :(得分:3)

A1:您的上述代码看起来很理想,只要它遵循PHP文档页面,我们就不说了;

A2:这完全取决于它的用途。在银行业,有些人喜欢在不活动的几分钟内杀死会议。在游戏或社交网络中,这些设置往往更宽松,更宽松,为用户提供更多余地;

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

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

希望这有帮助!

答案 1 :(得分:0)

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();
        }
    }
相关问题