无状态后端安全吗?

Posted

技术标签:

【中文标题】无状态后端安全吗?【英文标题】:Is stateless backend secure? 【发布时间】:2015-11-05 21:40:18 【问题描述】:

我正在开发一个关于 angular 和 spring 的应用程序。而且我对无状态后端的安全性有点困惑。这是流程 -

    在请求标头中,我发送电子邮件并通过 base64 编码的服务器返回具有 jwt 令牌的 cookie

    因为它只是一个 http 和安全标志 cookie 客户端与它无关。在对服务器的每个请求上,它都会附加到请求标头。

    为了更深入地了解用户活动,我使用mouse-entermouseleave 函数将活动发布到数据库中。

    我通过发送客户端令牌来保护我的应用免受 csrf 攻击

我不太确定它是否足够安全,以及我是否真的需要存储任何令牌或 cookie 相关数据以确保安全。

【问题讨论】:

我假设您使用的是 SSL ? @BertrandMartel 是的,我是 据我在 JWT 中了解,如果您想要更高的安全性,您应该确保用户重新登录时令牌不一样(确保轮换),您也可以为每个用户使用不同的密码 【参考方案1】:

人们似乎对保护无状态后端持怀疑态度。比如官方Spring Angular guide引用:

使用会话进行身份验证和 CSRF 保护绝对是一件好事

Spring Security 的项目负责人 Rob Winch 的这次演讲也是值得一看的:The State of Securing RESTful APIs with Spring

事实上,通过查看这些,我得出结论,我的 API 保持有状态,而不是不必要地重新发明敏感的安全轮。

【讨论】:

好的,我所做的基本上是模仿网络客户端,通过发送 JSESSIONID cookie、REMEMBER-ME cookie 等与每个请求。 KISS 方法。

以上是关于无状态后端安全吗?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP/2 是无状态协议吗?

是否可以使用无状态逻辑(无数据库)使令牌无效?

使用 Spring 的线程安全、无状态设计

JWT 用于无状态 API,但会话控制用于安全性

安全认证--JWT介绍及使用

所有视图都应该是无状态组件吗?