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

时间:2017-05-22 18:33:29

标签: angular

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

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

我一直在研究如何有效地隐藏前端的API密钥,但是没有找到任何解释良好的资源来解决这个问题。

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:6)

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

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

你的头在正确的位置,但在这种情况下,它似乎不是必要的一步。