如何在使用 httpOnly cookie 时保护 SPA 中的私有路由
How to secure private routes in SPA while using httpOnly cookies
我想使用 JWT 身份验证来保护我的 SPA 专用路由。为了尽可能确保一切安全,我想使用 httpOnly
cookie 在客户端存储我的 access_token
。
使用 httpOnly
cookie 可以保护我免受 XSS 攻击,但不幸的是,这种方法不允许我检查 cookie 是否确实存在于浏览器中。
在这种情况下 - 我如何实施一些逻辑来防止未登录的用户访问我的 SPA 的私有安全路由?
我是否被迫为此使用非httpOnly
cookie 或localStorage
?
Am I forced to use non-httpOnly cookies or localStorage for this?
没有。将您的 access_token
保存在带有 httpOnly
标志的 cookie 中,并且(如果可能)带有 secure
标志。
我们称这个 cookie session_cookie
.
当用户成功登录时,您可以 return 2 个 cookie:session_cookie
和另一个通知 JS 用户已通过身份验证的 cookie(我们称之为 SPA cookie
) .
JS
无法访问您的 session_cookie
,因此它不易受到 XSS
的攻击。此 cookie 会在每次请求时发送到服务器,服务器会检查令牌是否有效,否则会出现未经授权的错误 returned。
您的 SPA cookie
没有 httpOnly
标志,因此 JS
可以访问它,但服务器不使用它来验证用户身份,因此伪造此 cookie 毫无用处。
每当您在 SPA
上收到未经授权的错误时,您可以删除 SPA cookie
。
我想使用 JWT 身份验证来保护我的 SPA 专用路由。为了尽可能确保一切安全,我想使用 httpOnly
cookie 在客户端存储我的 access_token
。
使用 httpOnly
cookie 可以保护我免受 XSS 攻击,但不幸的是,这种方法不允许我检查 cookie 是否确实存在于浏览器中。
在这种情况下 - 我如何实施一些逻辑来防止未登录的用户访问我的 SPA 的私有安全路由?
我是否被迫为此使用非httpOnly
cookie 或localStorage
?
Am I forced to use non-httpOnly cookies or localStorage for this?
没有。将您的 access_token
保存在带有 httpOnly
标志的 cookie 中,并且(如果可能)带有 secure
标志。
我们称这个 cookie session_cookie
.
当用户成功登录时,您可以 return 2 个 cookie:session_cookie
和另一个通知 JS 用户已通过身份验证的 cookie(我们称之为 SPA cookie
) .
JS
无法访问您的 session_cookie
,因此它不易受到 XSS
的攻击。此 cookie 会在每次请求时发送到服务器,服务器会检查令牌是否有效,否则会出现未经授权的错误 returned。
您的 SPA cookie
没有 httpOnly
标志,因此 JS
可以访问它,但服务器不使用它来验证用户身份,因此伪造此 cookie 毫无用处。
每当您在 SPA
上收到未经授权的错误时,您可以删除 SPA cookie
。