从https://community.algolia.com/instantsearch.js/上的官方教程中,Algolia要求您将密钥编码到应用程序中,并与每个api请求一起使用。 如果有人要对此进行挖掘,是什么可以防止他们使用您的api密钥向搜索请求发送垃圾邮件?
如果有人要对此进行挖掘,是什么可以防止他们使用您的api密钥向搜索请求发送垃圾邮件?
你想要残酷的真理吗? 没有...
不幸的是,在Web应用程序中,无论如何都无法保护机密,无论是api键,令牌还是其他可能使用的名称约定。
在Web应用程序中,所需要做的只是使用F12或查看页面源并在原始html和JavaScript中进行搜索。
您可以尝试使用JavaScript模糊处理来使查找变得困难,但是反向工程仍然很容易。 即使在代码被混淆并以二进制形式发布的移动应用中,也很容易提取这些秘密。
如果您想了解更多有关Mobile Api Security Techinques的信息,请阅读本系列文章,以查找如何使用和绕过api密钥,访问令牌,HMAC和其他技术。 尽管本文是在移动API的上下文中编写的,但在Web应用程序上下文中对于用于保护API的安全技术仍然有效。
最好的方法是始终将对第三方API的Web应用访问权限委派给您可以控制的后端。
然后,在此后端中,您可以使用用户行为分析(UBA)解决方案来监视对第三方访问的不良使用。
一旦UBA变得复杂且部署成本高昂,您就可以开始在网络应用的所有页面上使用新的Google reCaptcha V3 。 ReCaptcha V3在后台工作以区分人与机器人时,不需要直接的用户交互。
因此,我将让Web应用程序向我的后端请求Agolia搜索,该后端将使用reCaptcha V3保护来区分机器人或攻击者对搜索功能的滥用。
请记住,这种方法的好处是永远不会泄露您的Agolia API密钥,因此攻击者永远无法直接使用它。