如何保护/保护Algolia前端api密钥的使用?

时间:2019-01-03 22:28:25

标签: algolia api-key

https://community.algolia.com/instantsearch.js/上的官方教程中,Algolia要求您将密钥编码到应用程序中,并与每个api请求一起使用。如果有人要对此进行挖掘,是什么可以防止他们使用您的api密钥向搜索请求发送垃圾邮件?

1 个答案:

答案 0 :(得分:0)

  

如果有人要对此进行挖掘,是什么要防止他们使用您的api密钥向搜索请求发送垃圾邮件?

您想要残酷的事实吗?没事...

不幸的是,在Web应用程序中,无论如何都无法保护秘密,无论是api键,令牌还是其他可能使用的名称约定。

在Web应用程序中,只需使用F12或查看页面源并在原始html和JavaScript中进行搜索即可。

您可以尝试使用JavaScript obfuscation使其难以查找,但仍然易于逆向工程。即使在代码被混淆并以二进制形式发布的移动应用中,也很容易提取这些秘密。

如果您想了解更多有关Mobile Api Security Techinques的信息,请阅读文章的this series,以了解如何使用和绕过api密钥,访问令牌,HMAC和其他技术。尽管本文是在移动API的上下文中编写的,但在Web应用程序上下文中对于用于保护API的安全技术仍然有效。

可能的解决方案

最好的方法是始终将对第三方API的Web应用访问权限委派给您可以控制的后端。

然后在此后端中,您可以使用用户行为分析(UBA)解决方案来监视对第三方访问的不良使用。

一旦UBA部署起来既复杂又昂贵,您可以在Web应用程序的所有页面上使用新的Google reCaptcha V3开始。 ReCaptcha V3一旦在后台工作就可以区分人与机器人,就不需要直接的用户交互。

因此,我将让Web应用程序向我的后端请求Agolia搜索,该应用程序将使用reCaptcha V3保护来区分机器人或攻击者在搜索功能中的滥用情况。

请记住,这种方法具有从不泄露您的Agolia API密钥的巨大好处,因此攻击者永远无法直接使用它。