我应该如何在不向客户端炫耀算法的情况下加密用于API访问的密码?

问题描述 投票:0回答:1

我有一个REST API(.net),它要求对密码进行加密(带有OAEP的RSA)。原因是从本地日志中掩盖了用户密码。

使用javascript执行这种加密非常复杂,我需要让客户端知道公钥。最终用户将能够对加密方法进行反向工程,然后可以将其用于暴力破解(或更糟)访问。那么,为什么要打扰,对(这是SSL安全的)。

事实是,我仍然需要对该密码进行加密。我是否应该在服务器端使用某种加密服务,该服务会给我密码以扔到令牌端点上?为什么不让该服务只为我登录然后返回令牌。我应该如何进行?

谢谢^ _ ^

javascript reactjs public-key-encryption
1个回答
0
投票

这似乎是一个通用的身份验证问题。您可以像解决用户身份验证一样解决它。这样想吧:

[当用户登录到您的应用程序时,他们会在客户端上提供其数据,然后在服务器上对其进行验证。为了使他们保持登录状态,他们可以通过Cookie会话,JWT或其他方式获得某种令牌。然后将其保存在客户端上,并在每个请求上发送给服务器,以验证它们是否已通过身份验证。

以上是网站如何显示“仅限注册用户”的内容。通过在每个新请求上验证先前给定的令牌。

现在,将此方法应用于您的REST Api。用户需要请求一个令牌(该令牌不应为您的主密码,但是基于每个用户的唯一生成的令牌),然后将其在本地保存X倍的时间。每次用户向API发出请求时,他们都会发送该令牌,该令牌已得到验证。

这也是普通API的操作方式。您将需要令牌或某种方式。如果您显示的是真正敏感的信息,则令牌应不时更新(从几分钟到几天,具体取决于敏感程度)。您在服务器中保留有效令牌的记录。这样,如果任何令牌被“窃取”,那么它将仅在短时间内有效。

© www.soinside.com 2019 - 2024. All rights reserved.