javascript - 如何在 React 中隐藏 API 密钥?
问题描述
将机密 API 密钥保存在 .env 文件中并不会完全隐藏 React 中的密钥,因为您仍然可以在浏览器中看到此密钥,这是真的吗?
那么在 React 中存储 API 密钥的正确方法是什么?我需要从服务器检索它们吗?
例如:
const [key, setKey] = useState('');
const getApiKey = async () => {
await axios.get("https://example.com/getApiKey").then((res) => { setKey(res) });
}
useEffect(() => {
getApiKey();
}, []);
我把它放在状态然后像这样使用它吗?
<StaticGoogleMap
className="google-map"
size="300x300"
apiKey={key}
/>
我认为这样 API 密钥仍然对浏览器中的用户可见。
如果有人能解释在前端安全存储 API 密钥的正确方法,我将不胜感激。谢谢!
解决方案
我使用的方法是将配置(即 config.js)文件放在“组件”目录之外,可能如下所示:
export default {
api: {
USERNAME: 'xxxxx',
PASSWORD: 'xxxxx'
}
};
然后在您的组件中:
import config from './path/to/config.js';
然后在您的组件中访问您的凭据:
var username = config.api.USERNAME;
var password = config.api.PASSWORD
推荐阅读
- ruby-on-rails - 更改 exception_handler gem 表的架构
- python - 如何在只有一个密码提示的情况下实现具有 root 权限的多个命令?
- android - 在 Android 模拟器上按主页按钮完成 Android API 21 上的 Activity
- azure - Azure Blob Storage V2 不再提供内容处置标头
- java - 加密和解密两个系统之间的消息
- linux - Docker 主机配置的 IP 地址错误
- docker - 如何在可用端口上公开多个 docker-compose 管道?
- c++ - 从 HWND 到应用程序名称
- php - 如何在多维数组中找到特定数组项的值
- opentok - OpenTok TokBox:当第一个连接的用户发布时,如何自动启动会话的实时流 (rtmp) 广播?