有什么安全的方法可以在 SPA 的客户端保留 rest auth 令牌吗?

Is there any safe way to keep rest auth token on the client side for SPA?

如果我们从rest服务器获取token并在每次授权请求中使用AuthorizationToken header,当浏览器页面关闭时我们仍然需要保留它。

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

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

  2. 如果整个session都使用HTTPS,带token的cookies被盗,是否可以通过token劫持https会话?

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

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

我真的没有看到其他方法(异常 cookie)在浏览器页面关闭时保留此类提示。

cookie 的问题是您的客户端需要是浏览器才能透明地利用此功能...此外,它确实不是 RESTful 服务中身份验证的更好方法 ;-)

您可以将其与具有到期日期和刷新能力的安全令牌机制相结合,如下面 link 所述:https://templth.wordpress.com/2015/01/05/implementing-authentication-with-tokens-for-restful-applications/.

此外,你还可以使用Angular等提供XSS解决方案的JS框架。请参阅以下 link 示例:

希望它能为您的问题提供一些提示, 蒂埃里