我的会话设置是否足够安全?

信息安全 php csrf 会话管理 会话固定
2021-09-03 08:44:39

我正在开发一个文件托管和共享网络应用程序。

以下 PHP 会话设置是否足够安全?

ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_lifetime', 0); 
ini_set('session.entropy_file', '/dev/urandom');
ini_set('session.hash_function', 'whirlpool'); //is whirlpool that necessary?
ini_set('session.use_only_cookies', 1);
ini_set('session.hash_bits_per_character', 5);
ini_set('session.cookie_secure', 1);

session_name('sid');

session_start();

if (!isset($_COOKIE['sid'])) {
    $_SESSION['token'] = CryptoCharGen::alnum(); //20 chars
}

要增加安全性:

  • 将加密的强 CSRF 令牌绑定到用户会话以进行表单验证。
  • 在登录和注销并销毁旧会话时重新生成新会话 ID。
  • 成功提交任何表单后重新生成新的 CSRF 令牌。

我已阅读重命名默认 PHP 会话名称,所以我sid改为命名它。这够好吗?

我应该使用自己的生成器生成会话 ID 吗?(CryptoCharGen)

我应该关心如何命名会话变量吗?

2个回答

您还可以添加session.entropy_length = 512session.use_trans_sid = 0

也不要忘记:

  1. 使用 https
  2. 如果您更改用户权限,则重新生成会话 ID 。
  3. 做会话超时。时间取决于您的应用程序。

它与安全无关,但为什么不改为session.hash_bits_per_character6。数字越大,从服务器发送到服务器的字符串越短。

这里有一些额外的步骤可以使会话安全。

  1. 将会话有效期限制为可接受的短时间
  2. 始终在 SSL/TLS 上传输会话 ID
  3. 永远不要在 URL 上发送会话 ID(使用 post 方法)
  4. 制作强 CSRF 令牌并确保 CSRF 令牌经过验证。

你可以找到更多关于