是否有任何安全的方法可以在SPA的客户端保留休息身份验证令牌?

时间:2015-03-04 13:20:38

标签: rest authentication cookies xss token

如果我们从其余服务器获取令牌并在每个授权请求中使用AuthorizationToken标头,我们仍需要在浏览器页面关闭时保留它。

唯一的通用方法是将令牌放入cookie。但是这样即使cookie不用于身份验证,它们也可能被XSS窃取。 而且我们不能使用httpOnly标志。所以:

  1. 是否有其他具体方法可以保护令牌并确保其安全?

  2. 如果在整个会话期间使用HTTPS并且带有令牌的cookie被盗,是否可以使用令牌劫持https会话?

1 个答案:

答案 0 :(得分:4)

我的回答可能有点天真,但为什么不将令牌存储在浏览器的持久存储中。如果您使用Angular,代码如下所述:

function((...), $window) {
    (...)
    $window.sessionStorage['userToken'] = '<user-token>';
}

当浏览器的页面关闭时,我真的没有看到其他方法(例外Cookie)来保留这些提示。

Cookie的问题在于您的客户端需要成为一个透明地利用此功能的浏览器...此外,它实际上不是RESTful服务中更好的身份验证方法; - )

您可以将此与具有过期日期的安全令牌机制以及刷新它们的能力结合起来,如以下链接中所述:https://templth.wordpress.com/2015/01/05/implementing-authentication-with-tokens-for-restful-applications/

此外,您可以使用像Angular这样的JS框架来为XSS提供解决方案。例如,请参阅以下链接:

希望它能为您的问题提供一些提示, 亨利