如何在使用httpOnly cookie的同时保护SPA中的私有路由

时间:2018-08-07 08:44:09

标签: authentication cookies local-storage jwt httponly

我想通过JWT身份验证来保护SPA专用路由。为了使所有内容尽可能地安全,我想使用httpOnly cookie将{​​{1}}存储在客户端。

使用access_token cookie在很大程度上保护了我免受XSS攻击,但是不幸的是,这种方法不允许我检查cookie是否确实存在于浏览器中。

在这种情况下-如何实施一些逻辑以防止未登录的用户访问SPA的私有安全路由?

我是否被迫为此使用非httpOnly cookie或httpOnly

1 个答案:

答案 0 :(得分:3)

  

我是否被迫为此使用非httpOnly cookie或localStorage?

不。使用access_token标志将httpOnly保存在cookie中,并使用secure标志保留(如果可能)。 我们将此Cookie称为session_cookie

用户成功登录后,您可以返回2个cookie:session_cookie和另一个通知JS用户已通过身份验证的cookie(我们将其称为SPA cookie)。

session_cookie无法访问您的JS,因此它不受XSS的攻击。该Cookie会在每次请求时发送到服务器,服务器会检查该令牌是否有效,否则会返回未经授权的错误。

您的SPA cookie没有httpOnly标志,因此JS可以访问它,但是服务器不使用它来对用户进行身份验证,因此伪造此cookie是没有用的。

只要您在SPA上收到未经授权的错误,就可以删除SPA cookie