【发布时间】:2020-01-12 11:47:21
【问题描述】:
我了解用户登录后需要重新生成 session_id 以防止会话固定攻击。并且session_id需要是随机字符串,防止被攻击暴力破解。
所以 Laravel 需要一些东西来加密 session_id。
但是为什么 Laravel 为 session_id 选择加密而不是散列呢?
我查看了 Laravel 对会话使用 AES 加密的文档。
但是,为什么 Laravel 选择在 session_id 被加密后每次都产生不同值的加密方法?
为 session_id 生成固定值,然后为那个 cookie 设置它的加密方法有什么问题?
为什么每次新的请求都会改变 session_id 的 cookie 值?
【问题讨论】:
-
Laravel 需要能够解密 session_id,如果 t 是哈希值,它就无法解密。
-
是的,现在说得通了。但是我想知道这里的MAC(消息验证码)有什么用。加密/解密过程的哪一部分涉及到 HMAC 方法。 HMAC 是使用 APP_KEY 对原始会话数据进行哈希处理,还是使用 APP_KEY 对加密会话数据进行哈希处理?如果数据被 HMAC 散列(或签名),它确实阻止了客户端修改,但是如何反转散列值以获取原始会话数据?
标签: php laravel security session cookies