这是在PHP中启动更安全的会话的正确方法吗?

时间:2015-02-28 03:43:16

标签: php security

我是网络开发的新手,甚至更新的会话。我使用以下代码在我的一个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();

这是启动会话的正确方法,以减少可能的会话攻击次数(我不熟悉,但我知道它们存在)?

编辑:如果在每个页面中包含此文件,过于频繁地重新生成会话ID session_regenerate_id()之后正在添加session_start()吗?我应该只为登录过程添加session_regenerate_id(true)吗?

1 个答案:

答案 0 :(得分:1)

如何设置会话选项:

php.ini解决方案

直接更改值

.htaccess解决方案

在documentroot上创建一个名为.htaccess的文件(我相信,默认情况下,xampp为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');