试图使我的头脑,而不是使用传统的$_SESSIONS,以保持用户登录跨页。在cookie中存储JWT以验证用户会话是否存在安全问题?
下面是我想要做的事情的一个简单的例子:
config.php
$key = "secret123";login.php
use Firebase\JWT\JWT; // A simple library to encode/decode JWT
require 'config.php';
// ... assumed valid user/pass, set cookie session
$token = ['uid' => 123];
$jwt = JWT::encode($token, $key);
setcookie('jwt', $jwt);
// redirect to private page私有_page.php
require 'config.php';
if (isset($_COOKIE['jwt'])) {
// check if JWT is tampered
try {
$decoded = JWT::decode($_COOKIE['jwt'], $key, ['HS256']);
} catch (Exception $ex) {
echo 'Invalid authentication';
}
echo 'You are logged in as uid '.$decoded['uid'];
}
else {
echo 'You are NOT logged in';
}这个实现是否足够安全,我还应该考虑什么?
发布于 2019-04-22 19:47:27
当使用JWT而不是session cookies时,有几个问题:
JWT令牌的有效使用涉及单点登录实现,特别是涉及多个系统的OpenID连接。他们不是一个好的替代传统的会议。
一些链接:
https://security.stackexchange.com/questions/207849
复制相似问题