在https://community.algolia.com/instantsearch.js/上的官方教程中,Algolia要求您将密钥编码到应用程序中,并与每个api请求一起使用。如果有人要对此进行挖掘,是什么可以防止他们使用您的api密钥向搜索请求发送垃圾邮件?
答案 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密钥的巨大好处,因此攻击者永远无法直接使用它。