gpt4 book ai didi

api - 有没有办法在前端页面上保护 API key ?

转载 作者:行者123 更新时间:2023-12-03 23:50:19 28 4
gpt4 key购买 nike

我的服务允许使用 POST 请求将任何 HTML 文档转换为 PDF。
它主要用于我的客户端服务器的后端,因此用于通信的 API key 是保密的。

现在,我正在考虑一种方法,让我的客户的访问者能够代表我的客户端 API key 调用我的服务,而不会暴露这个安全的 API key 。

我的主要问题是安全性。如果我的客户添加了一个包含 API key 的 XHR POST 请求,那么有人可以获取该 API key 并将其用于自己的目的并滥用我客户的帐户。

我可以按域过滤,但这是 轻松欺骗所以这是不可能的。

我想知道是否有一种方法可以从客户端(的客户端)调用私有(private)服务并在不冒其身份被盗的风险的情况下被识别?

最佳答案

如果您为经过身份验证的用户提供此 sublet,那么为他们提供唯一 key 是相当简单的(将他们的用户 ID 或 session 与 API key 和初始时间戳进行哈希处理的东西,并在访问之前对其进行检查/记录/查找蛮力API)。如果你在开放的网络上进行,没有任何类型的用户身份验证,那么速率限制确实会变得非常棘手。通常,您希望使用 session 哈希、IP 地址、操作系统和浏览器数据的组合来创建一个匿名配置文件,该配置文件在前端获取一个临时 key 。一种相当可靠的方法是在提供临时 key 之前强制用户通过验证码,以允许他们有限次数地使用永久 key 。任何其 ip/浏览器/ session 与已知客户端 key 的现有属性匹配的用户都会被分流到那个用户(并跳过验证码);任何与现有个人资料不匹配的人都会获得验证码。这使您成为欺骗目标的吸引力降低。最重要的是,您应该始终根据您期望(或负担得起)的流量类型,将整个事情的速率限制在合理的每天点击次数内,这样您就不会有任何意外。如果每次使用他们的 API key 时客户的钱都在线,这是您想要的最低限度的安全性。它将需要一个简单的数据库来存储这些“配置文件”、跟踪使用情况、检查暴力并维护当前有效的客户端 key 。客户端 key 应始终定期过期 - 与创建时间的时间差异,或常规的 cron 进程,或最大使用次数等。

我经常做的另一件事是基于曲线的速率限制。例如,如果我认为每分钟使用 5 次是合理的,那么在 session 一分钟内使用 5 次后,每次使用都会增加几分之一秒的延迟 * 数据前最后一分钟的使用次数,平方送达。

最好的答案是将这一切都放在登录系统的后面并加以保护。

关于api - 有没有办法在前端页面上保护 API key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444630/

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