如何在Angular 2客户端应用程序中隐藏/保护API密钥?

uni*_*fer 6 angular

我正在开发Angular 2应用程序。我正在通过服务进行几次API调用,但是我不想发布密钥。

我知道从后端使用密钥是首选方法,但是肯定必须有一种从前端执行此操作的方法。

我一直在研究如何有效地将API密钥隐藏在前端中,但是还没有找到任何很好的解释方法。

做这个的最好方式是什么?

joh*_*667 7

嗯,事实是,任何发送到客户端,包括HTTP调用中使用的信息,可以进行反向工程。在URL中具有API密钥本身将不会被遮盖。如前所述,唯一完全不对客户端隐藏的真正方法是将其保留在后端。您所能做的就是使跟踪变得困难,例如在环境变量中提供加密,让您的应用在发送之前对其进行解密,但仍将以纯文本形式存在于HTTP调用中。

好消息是,您在注释中提到的API是公共 API,因此实际上不需要隐藏它们。他们提供的信息首先是公开的,如果有人真的想要一个API密钥,他们可以注册一个。密钥通常由服务本身用来跟踪使用情况(因此,窃取它不会有任何好处,因为使用情况只会增加并且用尽更快)。如果您最终购买了一种服务,但该服务本身未提供混淆方法(即会话跟踪/ Cookie),则必须通过后端减轻它。

您的头在正确的位置,但是在这种情况下,这似乎不是必需的步骤。