使用快速会话而没有任何令牌用户身份验证是否安全?

时间:2016-05-24 19:58:02

标签: javascript angularjs node.js express

在AngularJS spa中使用没有任何令牌的expess-session进行用户身份验证是否安全?

无论如何,用户可以修改会话客户端吗?

登录时,请使用凭据(电子邮件,密码)

发送请求
connection.query( 'SELECT username, password, emailCode FROM `user` WHERE `email` = ?', [ email ], function ( error, results, fields ) {
    if( error ) console.log( error );
    if( !results.length ) return res.json( { err: 'Invalid password or email address' } ); // invalid email
    if( !bcrypt.compareSync( password, results[ 0 ].password ) ) return res.json( { err: 'Invalid password or email address' } ); // invalid password
    req.session.username = results[ 0 ].username;
    req.session.email = email;
    req.session.loggedIn = true;
    res.json( { username: req.session.username, msg: 'Successfully logged in' } );
} );

在快速路由中,这样的登录检查如下:

app.get( '/views/user/:name', function( req, res ) {
    var name = req.params.name;
    if ( typeof req.session.loggedIn !== 'undefined' && req.session.loggedIn ) {
        return res.sendFile( 'views/user/' + name, { root: __dirname + '/public/' } );
    } else {        
        return res.sendFile( 'views/error.html', { root: __dirname + '/public/' } );
    }
} );

如果req.session.loggedIn为true,则每个客户端需要的数据都通过http get请求并返回用户信息或其他任何内容

似乎工作正常,但它是否安全?

1 个答案:

答案 0 :(得分:2)

根据您使用应用程序配置的会话存储,可以将有关会话中存储的数据的信息发送给客户端。也就是说 - 如果您使用cookie来存储会话,那么一些信息将在客户端上,但这些信息是signed cookies,并且用户无法篡改它,只要他们没有'知道在服务器上定义的用于签名的秘密。