You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用file驱动时,如何从Laravel_session Cookie获取会话文件名?

从Laravel的laravel_session Cookie获取会话文件名(File驱动)

步骤1:提取并处理Cookie的原始加密内容

你的Cookie值格式为laravel_session:"[base64编码的JSON]",先做以下处理:

  • 移除前缀laravel_session:"和后缀",得到纯base64字符串
  • 对该字符串做URL解码(处理%3D这类URL编码字符)
  • 将解码后的base64字符串转为JSON对象,结构包含iv(初始化向量)、value(加密的会话ID)、mac(消息认证码)

示例代码(非Laravel脚本):

$cookieValue = 'laravel_session:"eyJpdiI6ImVjQkYvWWhQSlZZYUdVNk55Y0R5OFE9PSIsInZhbHVlIjoidG0xeWFjdXR3U3M0cEl2RzBVZnZ1YzZCcFlPVFVXNVNIbmM4YTRNdnZSWmcrUi83NUlXTmF5QXpRS1ZoeGd6Y01PeFdoYVliQXBvQ3lZOGhPdHltWVdURUZON3pxUkdIQ2hxLzBIcVZuMVRnTm5NMmdsT2cwV1ZlRk02OTQ2bjQiLCJtYWMiOiJlNWQzN2RjNDhmYTRhNDYxZDY4NzM0NmY5MjY2MDMwMGZkZGM4MzEzMTc1OTc1ZDA5ZWY0MzcxZGExMjZhYTYyIiwidGFnIjoiIn0%3D"';

// 提取核心base64部分
$rawBase64 = trim(str_replace(['laravel_session:"', '"'], '', $cookieValue));
// URL解码
$decodedBase64 = urldecode($rawBase64);
// 解码为JSON对象
$encryptedData = json_decode(base64_decode($decodedBase64), true);

步骤2:准备Laravel的加密密钥

从Laravel项目的.env文件中获取APP_KEY(格式为base64:xxxxxx),将其解码为原始二进制密钥:

$appKey = 'base64:你的Laravel项目APP_KEY内容';
// 移除前缀base64:后解码
$key = base64_decode(substr($appKey, 7));

步骤3:解密得到会话ID

Laravel采用AES-256-CBC算法加密会话数据,使用OpenSSL解密value字段并结合iv向量:

// 取出加密的会话ID和IV并解码
$encryptedSessionId = base64_decode($encryptedData['value']);
$iv = base64_decode($encryptedData['iv']);

// 解密获取真实会话ID
$sessionId = openssl_decrypt(
    $encryptedSessionId,
    'AES-256-CBC',
    $key,
    OPENSSL_RAW_DATA,
    $iv
);

此时$sessionId就是framework/sessions目录下对应的会话文件名。

可选:验证数据完整性

可以通过对比mac值确保会话数据未被篡改,Laravel的MAC由HMAC-SHA256生成:

$calculatedMac = hash_hmac(
    'sha256',
    $iv . base64_decode($encryptedData['value']),
    $key,
    true
);

// 对比计算出的MAC和Cookie中的MAC
if (hash_equals(base64_decode($encryptedData['mac']), $calculatedMac)) {
    // 数据未被篡改,会话ID有效
}

注意事项

  • 确保非Laravel脚本的PHP环境已启用OpenSSL扩展
  • APP_KEY必须与Laravel项目完全一致,否则解密失败
  • File驱动下,会话文件名即为解密后的sessionId,无需额外处理

内容的提问来源于stack exchange,提问作者Al_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 17:02:38