api密钥安全求教

大佬们,求大佬指点一下,像这种标准的/v1/chat/completions应该是使用了官方openai的sdk进行前端开发吗?但是为什么这样在前端进行发请求可以不用在请求头带上key呢(可能这样的问题很呆,但是我自己搭建的时候真的想不到如何做到这样。。除非只在后端进行。。)?
image
而且我发现后台发送的请求的地址和网站真正的api地址好像是不一样的:


真心求教,有大佬来捞捞吗!!。。。

甚至没看懂你在问什么 OPTIONS是浏览器跨域相关用的

你要找 POST 类型的记录

1 个赞

options是预请求

抱歉,因为有两个一样的地址。。。。但是post请求里面也是没有key相关内容

image
image

抱歉抱歉,疏忽截错了,在另一个post请求且同地址的请求头中也没有找到key
image

headers里没有这个吗?

image

大佬,其实我就是想了解一下,如果我搭建了一个网站,我使用了openai的sdk,在和ai对话的时候会带上key,我想要隐藏这个key不至于说打开f12就可以看到 :sob: :sob:

是的,吾皇,甚至没有你这个属性名。。。只有token。。。。
image

就像nextchat那个开源的平台一样也是看不到这个key。。。

反正像 nextweb 这种网站,不会直接暴露 key, 但是登录密码暴露的话可以当成 key 偷你的额度,实际上前面我的截图就来自我部署的 nextweb

nextchat 如果你不设置登录密码,就没有 key 的认证,如果网站名别人知道了,是可以白嫖的

好像那些拿nextchat二改的项目,他们增加一个登录功能又可以分配额度

但是nextchat好像也是直接使用openai的sdk的吧!?!?为什么它可以做到在请求头中隐藏key呢?nextchat好像是如果填写密码进行使用是不会看到key,但是如果直接填key进行使用是可以看到

抱歉,截错了,但是post请求下也是没有的。。。。

已确认,不是我的站点

如果你是前端填 key,那 key 肯定是放请求头了的;
如果你是环境变量设置的key,它就把你的登录密码作为验证手段,项目仍然使用 环境变量里的 key 向 openai 或者其他中转发送请求,达成隐藏真实 key。
好处就是即使你的登录密码暴露了,换一个就安全了,不至于真实key也被偷走。

还有一种就是浏览器模拟,我就是用这个破的官网

噢噢,就是设置一个env文件,把key设置成环境变量,在前端发送请求的时候是不会出现在请求头中,是这样吗,吾皇!!!! :see_no_evil: :see_no_evil: :see_no_evil:

看看你的 :heart_eyes: :heart_eyes: :heart_eyes: :heart_eyes: