bclswl0827 / ChatGemini

✨ ChatGemini 是一个基于 Google Gemini 的网页客户端,对标 ChatGPT 3.5,操作逻辑同 ChatGPT 3.5 一致,同时支持在聊天中上传图片,应用会自动调用 Gemini-Pro-Vision 模型进行识图。
http://ibcl.us/ChatGemini/
MIT License
912 stars 246 forks source link

Docker问题:环境变量不带入以及API key会暴露 #12

Closed 100vision closed 8 months ago

100vision commented 8 months ago

问题描述:

最新 Docker 没有 403 错误了,但好像环境变量 REACT_APP_GEMINI_API_KEY 和 REACT_APP_PASSCODE_MD5 不起作用了,不会带入。1. 打开没有要求输入 Passcode ,2. 发起一个聊天,则出现错误,API Key 没有问题。“ [GoogleGenerativeAI Error]: Error fetching from https://generativelanguage.googleapis.com/v1/models/gemini-pro:streamGenerateContent?alt=sse: [403 ] Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.

另外,发现API key会泄露。服务器直接返回的env.json 环境变量(包含API key) 给浏览器。

{
    "REACT_APP_PASSCODE_MD5": "<my-passcode>",
    "REACT_APP_TITLE_SITE": "",
    "REACT_APP_TITLE_HEADER": "",
    "REACT_APP_GEMINI_API_SSE": "",
    "REACT_APP_GEMINI_API_KEY": ""<my-api-key>"",
    "REACT_APP_GEMINI_API_URL": "https://chat.my-domain.com"
}
bclswl0827 commented 8 months ago

REACT_APP_PASSCODE_MD5 不起作用了 发起一个聊天,则出现错误,API Key 没有问题

如果 env.json 内容包含了 Passcode 和 API Key,但是仍然没法使用的话,请检查浏览器是否请求 env.json 成功。

发现API key会泄露

这是一个纯前端项目,API Key 包含在请求中是不可避免的,但是 Google Gemini 的 API 随手就能免费申请,按常理来讲被盗用的几率很小,毕竟写爬虫盗用其他人站里的 API Key 远比写脚本批量申请 API Key 的成本来得高

若您实在介意的话,可以启用反向代理,可以在前端这里的 API_KEY 随便填点字符串,在反向代理的位置修改请求头,替换成正确的 Key

100vision commented 8 months ago

了解了,谢谢。