RESTful身份验证和会话管理的安全问题

时间:2018-10-23 11:56:27

标签: rest microservices restful-authentication session-management

我正在尝试为微服务实现身份验证和会话管理。为了实现RESTful处理,我知道我需要使用某种基于令牌的身份验证以避免在服务器上跟踪客户端会话数据。以下来自this answer的信息安全堆栈交换上的引言很好地总结了我对实现的理解:

  

在基于令牌的身份验证中,不会在服务器端保留会话(无状态)。初始步骤相同。凭证与令牌交换凭证,凭证随后附加到每个后续请求(也可以存储在cookie中)。但是,出于减少内存使用,易于扩展和总体灵活性的目的,发出了带有所有必要信息的字符串(令牌),该字符串在客户端对服务器的每次请求之后进行检查。

由此,我了解了无状态会话维护对于如所述的可伸缩性和灵活性有何优势。但是在我看来,这使应用程序面临一些严重的问题:

  1. 如果黑客以某种方式拦截了凭据交换HTTP REST调用,则他们可以在服务器上执行replay attacks,以获取他们想要的所有信息。
  2. 事实上,由于会话令牌存储在客户端,黑客难道不能通过调试应用程序从LocalStorage / SessionStorage检索必要的信息吗?还是通过使用开发工具监视传入和传出的HTTP调用?如果他们获得了所需的令牌信息(甚至是加密的令牌信息),他们就可以简单地开始从另一个窗口伪造对服务器的REST调用,并获得他们想要的所有数据!

Replay Attack Wikipedia image

  1. 最后,即使您确实为客户端提供了会话令牌,服务器仍不需要对那个令牌进行身份验证吗?实际上,服务器必须维护到用户映射的会话令牌……但这是否违反了基于无状态REST的体系结构的目的?

也许我正在看到这些问题,因为我的理解存在差距。如果是这样,我希望对基本概念有所了解。如果没有,我想知道是否有解决这些特定问题的技术。

0 个答案:

没有答案