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

如何在Angular 2客户端应用程序中隐藏/保护API密钥?,angular,Angular,我正在开发一个Angular 2应用程序。我正在从我的服务中进行几个API调用,但我不想发布密钥 我知道从后端使用密钥是首选方法,但肯定有一种方法可以从前端做到这一点 我一直在研究如何在前端有效地隐藏API键,但没有找到任何关于如何隐藏API键的详细说明 做到这一点的最佳方法是什么?事实是,发送到客户端的任何东西,包括HTTP调用中使用的信息,都可以进行反向工程。在URL中有一个API密钥本身就不能被掩盖。正如您所提到的,将其完全隐藏在客户端的唯一真正方法是将其保留在后端。你能做的最多的就是让跟

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

我知道从后端使用密钥是首选方法,但肯定有一种方法可以从前端做到这一点

我一直在研究如何在前端有效地隐藏API键,但没有找到任何关于如何隐藏API键的详细说明

做到这一点的最佳方法是什么?

事实是,发送到客户端的任何东西,包括HTTP调用中使用的信息,都可以进行反向工程。在URL中有一个API密钥本身就不能被掩盖。正如您所提到的,将其完全隐藏在客户端的唯一真正方法是将其保留在后端。你能做的最多的就是让跟踪变得困难,比如在一个环境变量中加密它,让你的应用程序在发送之前解密它,但它仍然会以明文形式出现在HTTP调用中

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


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

哪个API是关键?根据服务提供键的方式,这里可以有两个不同的选项。我使用了几个API:NewsApi、Bing News API和Event Registry API。新闻Api和事件注册表都需要url中的一个键,而Bing新闻Api需要一个标题和选项。您会使用这些Api的付费版本吗?(也就是说,你会购买一把钥匙吗?@joh04667现在我只使用免费版本