首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REST服务和安全/身份验证不是对立的吗?

REST服务和安全/身份验证不是对立的吗?
EN

Stack Overflow用户
提问于 2021-06-01 09:11:46
回答 1查看 39关注 0票数 0

我很难调和基于浏览器的javascript应用程序的想法,该应用程序需要使用(按书本方式) REST服务作为后端来实现身份验证。

所有其他身份验证方案基本上都是不安全的,因为它需要将密码存储在js应用程序中,在js应用程序中它很容易被其他scripts/extensions.

  • Any类型的令牌方案窃取,而该令牌可以被其他scripts/extensions

  • Furthermore,轻松检索--任何使用的令牌方案都不应该在js应用程序中传输令牌,因为这是不安全的。因此,令牌必须通过POST或其他HTTP方法传输,但这再次违反了GET请求的REST原则(也就是说,您应该使用GET读取数据,而不是使用POST).

)

因此,如果我真的关心安全性,那么最安全的方案不是基于cookie/会话的方法吗?这不排除使用REST服务后端吗?

在我看来,休息服务仍然很受欢迎,所以我是不是想得太多了?

编辑:,我在找一个清晰的答案

principles.

  • or描述了在一般情况下,REST服务与最大化安全性是不相容的,或者说明了如何克服这些挑战,这样REST服务就可以与最大的安全性一起使用(也就是说,与非REST解决方案相比,不会带来更多的风险),同时保持100%忠实于REST解决方案,principles.

  • or描述了100%真正的REST服务与其他方案一样安全的情况所需的条件(例如:“要求终端用户浏览器与不允许的扩展一起锁定”)。
EN

回答 1

Stack Overflow用户

发布于 2021-06-01 09:56:40

这可能是自以为是的,但无国籍状态被高估了。大多数服务实际上不需要是无状态的,您很可能不会开发下一个有1000万并发用户的大热门。从纯粹的安全角度来看,无国籍会带来诸如令牌失效之类的问题。(退出)几乎是不可能的。

还有,有状态的休息也不是闻所未闻的。出于上述原因,在许多情况下,有一个有状态的后端来维护用户会话,同时也遵循大多数REST原则是非常有意义的。许多时候,类似于API网关的组件提供状态,而它背后的所有服务都可能是无状态的。实际上,这可能是许多应用程序所能得到的最安全的体系结构,因为后端服务可以扩展,但它也为会话失效等特性提供了前端状态。

你也可以混合这些,这是一个经常使用的东西。您可以在它自己的来源上有一个身份提供程序,比如login.example.com,您可以在这里发出令牌,并且这个身份提供程序可以是有状态的(即。使用cookie进行刷新令牌或会话id存储)。然后,您可以在api.example.com上使用无状态服务,这些服务将无状态地使用这些令牌。您是对的,令牌随后容易受到XSS的影响,但是如果您愿意的话,这通常是一种折衷的、聪明的风险--例如,可以通过非常有限的令牌生存期来减轻这种风险(这很有帮助,因为XSS很多时候都需要用户交互,所以即使攻击者能够获得一个令牌,下一次仍然不自动)。

因此,简而言之,这取决于您想要承担的风险,以及您需要满足的业务需求。即使你是有状态的,你也不需要一般地放弃休息。

(而且,在GET请求中对令牌使用请求头与REST或HTTP标准完全不同)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67786000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档