我是web开发的新手,甚至是会话的新手。我使用以下代码在我的一个PHP文件中启动一个会话,并将其包含在其他任何地方:
ini_set('session.cookie_lifetime', 0);
ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies', 1);
ini_set('session.use_strict_mode', 1);
ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 0);
ini_set('session.use_trans_sid', 0);
ini_set('session.cache_limiter', 'private_no_expire');
ini_set('session.hash_function', 'sha256');
session_start();
这是启动会话以减少可能的会话攻击次数的正确方法吗(我不太熟悉,但我知道它们存在)?
编辑:如果每页都包含此文件,那么在session_start()
之后添加session_regenerate_id()
是否过于频繁?我应该只在登录过程中包含session_regenerate_id(true)
吗?
如何设置会话选项:
php.ini解决方案
直接更改值
.htaccess解决方案
在documentroot上创建一个名为.htaccess
的文件(我相信,在examplep中默认为c:'xampp'htdocs
<IfModule mod_php5.c>
php_value session.cookie_lifetime 0
php_value session.use_cookies 1
php_value session.use_only_cookies 1
php_value session.use_strict_mode 1
php_value session.cookie_httponly 1
php_value session.cookie_secure 0
php_value session.use_trans_sid 0
php_value session.cache_limiter 'private_no_expire'
php_value session.hash_function 'sha256'
</IfModule>
PHP解决方案(您需要在每个文件上设置此选项)
ini_set('session.cookie_lifetime', 0);
ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies', 1);
ini_set('session.use_strict_mode', 1);
ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 0);
ini_set('session.use_trans_sid', 0);
ini_set('session.cache_limiter', 'private_no_expire');
ini_set('session.hash_function', 'sha256');