首页 > 解决方案 > 我应该如何加密 API 访问的密码而不向客户端展示算法?

问题描述

我有一个 REST API (.net),初始登录需要加密密码(带有 OAEP 的 RSA)。原因是从本地日志中隐藏用户密码。

使用 javascript 执行此加密很复杂,我需要让客户端知道公钥。最终用户将能够对加密方法进行逆向工程,然后可以使用它来蛮力(或更糟)访问。那么为什么要麻烦,对(它是 SSL Secure)。

问题是,我仍然需要加密该密码。我是否应该在服务器端提供某种加密服务,为我提供在令牌端点抛出的密码?为什么不让服务为我登录然后返回令牌。我应该如何进行?

谢谢^_^

标签: javascriptreactjspublic-key-encryption

解决方案


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

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

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

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

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


推荐阅读