我正在开发一个Angular 2应用程序。我正在通过我的服务进行多次API调用,但我不想发布密钥。
我知道使用后端的密钥是首选方法,但肯定必须有一种方法可以从前端执行此操作。
我一直在研究如何有效地隐藏前端的API密钥,但是没有找到任何解释良好的资源来解决这个问题。
这样做的最佳方式是什么?
答案 0 :(得分:6)
嗯,事实是发送到客户端的任何,包括HTTP调用中使用的信息,都可以进行逆向工程。在URL中使用API密钥本身就不会被遮挡。正如您所提到的,唯一能够将其完全隐藏在客户端的真正方法是将其保留在后端。您可以做的最多就是难以跟踪,例如在环境变量中加密它并让您的应用在发送之前解密它,但它仍然会以纯文本形式在HTTP调用中。
好消息是,您在评论中提到的API是 public API,因此实际上没有必要隐藏它们。他们提供的信息是公开的,如果有人真的想要一个API密钥,他们可以只注册一个。密钥主要由服务本身用于跟踪使用情况(因此窃取它没有任何好处,因为使用会增加并且更快地耗尽)。如果您最终购买了一个并且该服务本身不提供混淆方法(即会话跟踪/ cookie),则您必须通过后端来缓解它。
你的头在正确的位置,但在这种情况下,它似乎不是必要的一步。