提问人:Fast Coderz 提问时间:2/28/2023 最后编辑:Brian Tompsett - 汤莱恩Fast Coderz 更新时间:6/28/2023 访问量:2015
Chat GPT OpenAI API 密钥安全问题
Chat GPT OpenAI API key security issue
问:
我在 中使用了聊天 GPT 开放 AI API,他们的 https API 需要带有 API 密钥的标头中的授权密钥。iOS application
curl https://api.openai.com/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"model": "text-davinci-003", "prompt": "Say this is a test", "temperature": 0, "max_tokens": 7}'
https://platform.openai.com/docs/api-reference/making-requests
我尝试使用嗅探器应用程序“Http Checker”来检查是否可以嗅探 API 密钥并且是否易于解码。
有什么解决方案可以避免此 API 密钥被暴露? 正如他们的 api 文档明确指出的那样
-H "Authorization: Bearer YOUR_API_KEY" \
因此,任何使用 iOS 应用程序的人都可以嗅探和使用API_KEY
还有多种其他方法可以将开放的 ai API 移动到云函数、自定义服务器等,但如果有人将 API 直接集成到移动应用程序中, 有没有办法使用第三方应用程序直接访问此API_KEY?
答:
3赞
Holger Just
2/28/2023
#1
好吧,凭据是通过HTTPS传输的。因此,不是每个人都能嗅到它,只有有权访问未加密的HTTP数据的人才能嗅到它。这正是 https 应该防范的。
您只能“嗅探”数据,因为您故意使用代理服务器或类似服务器打开连接,并信任其 TLS 无效证书。
评论
0赞
Fast Coderz
2/28/2023
无论如何,标头不会暴露吗?任何人都可以使用第三方服务并获得所需的API_Key并使用它。API 密钥有定价,因此任何人都可以利用访问它:(
1赞
Sören
2/28/2023
是的,通过使用 HTTPS。你已经是了。
0赞
Fast Coderz
3/1/2023
我已经在使用 HTTPS,但第三方工具暴露了标头,我不希望暴露标头
0赞
Holger Just
3/1/2023
第三方工具专门“公开”了标头,因为您允许此工具读取数据。使用正常的验证规则,即客户端强制执行有效的服务器证书,只有客户端和服务器才能访问数据,而不能访问中间人。但是,如果这仍然是一个问题,请编辑您的原始问题并添加有关 (1) 您正在使用的“嗅探器”工具以及 (2) 您如何配置它以访问传输中请求的更多详细信息。当您运行命令并且屏幕截图显示 iOS 应用程序时,这似乎是一个不常见的设置。curl
0赞
Kane Hooper
3/1/2023
正如其他人所说,HTTPS将加密标头,其他用户将无法使用“嗅探器”等工具访问API密钥。
1赞
iVentis
3/18/2023
#2
只需安装像“Proxyman”这样的应用程序或任何替代方案,并允许对此域进行 https 嗅探,然后可以轻松看到解密的 https 响应。正如 Holger 所建议的那样,SSL 固定在这里不是一个选项,因为如果我没记错的话,我们需要知道 openai 服务器的私有密钥。您必须拥有自己的中间后端,并在其上进行一些加密。
我也想知道是否有更好的方法。
评论
0赞
Rob Napier
3/19/2023
固定不需要私钥;只有公钥,并且绝对可以应用于您无法控制的服务器。但我同意更好的解决方案是中间后端。这为您提供了更多的控制权。即使您可以阻止嗅探,也可以从二进制文件中提取密钥。
0赞
Fast Coderz
3/21/2023
我添加了自定义后端并加密了 API 密钥。
评论