目前有一个小程序,功能上比较简单,但是需要调用其他平台提供的 AI 相关接口。为了节省服务器费用,想直接在前端请求接口,但是这样就会暴露接口的 key。有没有其他办法可以防止 key 泄露? 或者默许 key 可能的泄露,然后实时监控接口的使用量,这种方式是否可行?
目前有一个小程序,功能上比较简单,但是需要调用其他平台提供的 AI 相关接口。为了节省服务器费用,想直接在前端请求接口,但是这样就会暴露接口的 key。有没有其他办法可以防止 key 泄露? 或者默许 key 可能的泄露,然后实时监控接口的使用量,这种方式是否可行?
绝对不要在前端硬编码或明文存储敏感 Key。以下方案按推荐优先级排序:
实现方式:
// 前端请求你的代理接口(无Key)
fetch('https://your-proxy.com/ai-api', {
method: 'POST',
body: JSON.stringify({ prompt: "用户输入" })
})
// 云函数(示例:AWS Lambda)
exports.handler = async (event) => {
const response = await fetch('https://ai-platform.com/api', {
headers: {
'Authorization': `Bearer ${process.env.SECRET_KEY}` // 从环境变量读取
},
body: event.body
});
return response.json();
};
HTTP Referer
或IP白名单sign
签名参数或请求头校验增强安全性监控指标:
必须使用方案一,其他方案作为辅助。Serverless方案:
如果你放在前端,基本没法隐藏key,不管是混淆还是加密,在最终也会在你请求AI接口的时候会暴露,只要想办法抓包就行了。至于你的方案二,实时监控接口用量,理论上就不现实,你这估计也是人工监控,他半夜跑你有什么办法。个人建议你还是放服务端吧
10 回答10.5k 阅读
15 回答7.8k 阅读
3 回答11.4k 阅读✓ 已解决
2 回答11.4k 阅读✓ 已解决
5 回答4.3k 阅读✓ 已解决
2 回答11.1k 阅读✓ 已解决
2 回答8k 阅读✓ 已解决
代码混淆一下