gpt4 book ai didi

javascript - 如何保护 JavaScript 应用程序的 API 调用?

转载 作者:可可西里 更新时间:2023-11-01 02:03:14 25 4
gpt4 key购买 nike

我有一个 JavaScript 应用程序。

它是用 jQuery 构建的。

它使用 $.get() 从服务器拉取 JSON 数据,并使用该数据加载拼图。

我想将 JavaScript 应用程序分发给客户,并使其易于安装。

我希望它能简单地为他们提供一个 JavaScript block ,他们可以将其放入他们的页面,然后它将与我的 API 交互。

我没有传递敏感数据,我的任何 API 都在保护数据库免受 SQL 注入(inject)等攻击。

我只是想尝试防止未经授权使用我的 API,但我想不出用 JavaScript 来做到这一点的方法,因为任何拥有 DOM 检查器的人都可以从任何变量中获取任何凭据或可以监控任何服务器流量发布或获取数据...

是否可以验证另一端的引荐来源网址?

我知道这不是防弹的,但它不是敏感数据。我只想尽可能减少未经授权的使用..

有什么想法吗?

注意:我知道混淆 API key 或其他东西是徒劳的,我想知道除了用于识别 API 调用者的传统 key 之外,我还可以放置哪些其他控件。我完全控制 API 本身,所以我可以在这方面做任何事情......

最佳答案

JavaScript 身份验证存在漏洞

使用 JavaScript,几乎任何身份验证系统都会有漏洞,原因很简单,因为代码直接在浏览器中运行并且任何人都可以看到(网络调用也是如此)。因此,您可以根据自己的情况尝试几种方法。

IP白名单

如果您要将此应用程序分发给一小部分客户,并且您确切知道他们将从何处访问它,则可以使用 IP 白名单。这确实是完全保护 API 的唯一方法。然而,这种方法非常麻烦,因为对于每个新客户端,您都必须更新 API 白名单,并且考虑到您在这里谈论的可能不是您正在寻找的(但我提到它只是因为它有可能)。

访问 token

另一种方法是访问 token 。这是 Facebook 等网站常用的方法。有两种方法可以做到这一点。一种是只给每个客户一个 key 。您可以为每个人使用相同的 key ,但这不是很安全。为每个人提供不同的 key 不仅可以让您跟踪使用情况,还可以在必要时撤销访问权限。

访问 token 的第一种方法是在 JS 客户端中提供它。然而,这意味着任何查看源代码的人都能够访问您的 key ,并使用它发出请求。

第二种方法是将 key 存储在运行客户端的网站的服务器上的某个位置。然后,该服务器可以使用该 key 进行服务器到服务器调用以获得临时 session token 。人们仍然可以通过前端访问临时 session token ,但他们必须先访问该站点才能获取它(这允许您将处理此问题的责任转嫁给网站运营商)和 token 最终会过期。然而,这意味着需要一些服务器端代码,并且该应用程序将不仅仅是拖放式的东西。

对于上面给出的方法,您还可以查看类似 OAuth 的内容,以避免重新发明轮子。

白名单硬顶

使用 IP 的另一种可能做法是对特定 IP 进入白名单的频率或每天的次数设置硬上限。虽然您可能会遇到真正喜欢拼图的用户的问题,但这可以防止一些潜在的滥用。

关于javascript - 如何保护 JavaScript 应用程序的 API 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18516410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com