【问题标题】:Is it bad security to save jwt in cookie to pass it to local storage?将 jwt 保存在 cookie 中以将其传递到本地存储是否安全?
【发布时间】:2018-02-22 20:11:43
【问题描述】:

为了让我的 twitter 登录以使用 jwt 会话和 angularjs,我创建了一个带有 twitter 用户名和显示名称的 jwt,将其作为 cookie 传递并将其保存到本地存储。以下是一些相关代码:

登录用户并保存cookie:

app.get('/login/twitter', passport.authenticate('twitter'));
    app.get('/login/twitter/callback', function(req, res) {
        passport.authenticate('twitter' , {session: false} , function(err, user, info) {
            if(err) {
                console.log(err);
            }
            var token;
            token = user.generateTwitterJwt();
            // res.status(200);
            // res.json({
            //  "token" : token
            // });
            res.cookie('jwt' , token);
            res.render('login.jade');
        })(req, res);
    });

保存到本地存储并删除 cookie:

$scope.twitterTest = function() {
    var jwtCookie = $cookies.get('jwt');
    authenticationService.saveToken(jwtCookie).error(function() {
        if(err) {
            console.log(err);
        }
    }).then(function() {
        $cookies.remove('jwt');
        var url = '/profile';
        $window.location.href = url;
    });
}

我想知道这样做是否有任何缺点。有什么安全问题吗?我正在尝试使用 jwt 和 angularjs 保存到本地存储进程,因为这是我设置本地登录的方式。

【问题讨论】:

  • 为什么不直接把token存到本地存储呢?
  • @RaphaelMüllner 我不知道必须从 Twitter 回调页面获取 jwt,因为发布请求被阻止
  • 我不得不承认我对AngularJS一无所知,但我不认为你的技术对安全性有很大影响。在将令牌保存到本地存储之前,我觉得在会话中“缓冲”令牌并不干净。

标签: javascript angularjs security cookies jwt


【解决方案1】:

您可以使用浏览器 sessionStorage 代替 localStorage,SessionStorage 更安全,因为它会随着浏览器会话结束而被删除。并直接将其存储在 sessionStorage 中而不是 cookie 中,这种情况下不需要 cookie。

【讨论】:

    猜你喜欢
    • 2018-11-05
    • 2021-09-26
    • 1970-01-01
    • 2022-01-24
    • 2018-11-12
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    相关资源
    最近更新 更多