php - 检查 session 是否存在(Nginx)

标签 php session nginx

我有两个 PHP session :

$_SESSION["session"]["key"] = md5 ($token . $userAgent . $ip);
$_SESSION["session"]["timeout"] = time ();

只是想检查与 nginx 的 session ,尝试了此代码但没有成功:

location / {
    if ($request_filename ~* "index.php") {
        break;
    }

    if ($http_cookie ~* "session") {
        break;
    }

    rewrite ^.+$ https://localhost/index.php last;
}

有什么线索吗?

谢谢。

最佳答案

cookie 仅保存 session ID,ID 始终在 session_start(); 上创建,因此如果您在脚本中调用该 ID,则用户将始终拥有 session ID。

你最好的选择是添加第二个cookie:

setcookie('session_key',md5 ($token . $userAgent . $ip));

然后在 nginx 中:

if ($http_cookie ~* "session_key")
{
    break;
}

检查该 cookie 是否已设置。

如果哈希敏感,则执行以下操作:

setcookie('session_key_active','1');

然后在 Nginx 中:

if ($http_cookie ~* "session_key_active")
{
    break;
}

但这仍然容易受到攻击,请始终检查服务器端值是否匹配!

关于php - 检查 session 是否存在(Nginx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3542149/

相关文章:

php - 使用 PHP 或 MySQL 转换 utf8 字符

java - el中的 session 设置并获取java类

node.js - 在同一 nginx 服务器上使用 SSL 的两个 node.js 域 - 443 的重复监听选项

ruby-on-rails - Rails 发送没有状态消息的 HTTP 状态代码

php - 我可以在 init() 方法中取消 Zend Controller 操作吗?

php - 你能解释一下这些令人不安的 md5 和模数异常吗?

php - 连接 MySQL 时出现访问被拒绝错误

PHP 在 WHERE 子句中使用 $_SESSION ['user' ] 插入 MySQL 数据库

ruby-on-rails - rails : get session timeout

ruby-on-rails - nginx.conf(拒绝写入权限)。我该如何解决?