当前位置: 首页 > news >正文

2025-05-07-关于API Key 的安全管理办法

为了确保 API Key 的安全性,避免将敏感信息硬编码在代码中,我们可以使用 环境变量 或 配置文件 来管理敏感信息。以下是两种常见且推荐的方法,帮助你实现 API Key 的安全管理:

✅ 方法一:使用环境变量(推荐)
📌 原理说明
环境变量是一种在运行时动态注入配置信息的方式,适用于本地开发、测试环境、CI/CD 管道、以及生产服务器。这种方式可以有效避免敏感信息被提交到版本控制系统中。

🧩 示例代码(Python)

import os
from openai import OpenAIdef cut_title(long_title):# 从环境变量中读取 API Keyapi_key = os.getenv("OPENAI_API_KEY")if not api_key:raise ValueError("API Key 未设置,请设置环境变量 OPENAI_API_KEY")client = OpenAI(base_url='https://api.siliconflow.cn/v1',api_key=api_key)# ... 其余逻辑保持不变 ...

在这里插入图片描述
windowh 使用:cmd

set OPENAI_API_KEY=your_api_key_here

✅ 方法二:使用配置文件(如 .env 或 config.json)
📌 原理说明
使用配置文件(如 .env 或 config.json)也是一种常见的做法,尤其适合本地开发。可以使用 python-dotenv 库自动加载 .env 文件中的变量。

🧩 示例代码(使用 .env 文件)

  1. 安装依赖
pip install python-dotenv
  1. 创建 .env 文件
  2. 在这里插入图片描述在这里插入图片描述
OPENAI_API_KEY=your_api_key_here
  1. 修改 Python 代码
import os
from dotenv import load_dotenv
from openai import OpenAI# 加载 .env 文件
load_dotenv()def cut_title(long_title):api_key = os.getenv("OPENAI_API_KEY")if not api_key:raise ValueError("API Key 未设置,请检查 .env 文件")client = OpenAI(base_url='https://api.siliconflow.cn/v1',api_key=api_key)# ... 其余逻辑保持不变 ...

如何创建.env文件?
在这里插入图片描述
在这里插入图片描述
🧪 三、在 Python 代码中加载 .env 文件
使用 dotenv 库加载 .env 文件中的变量:

import os
from dotenv import load_dotenv# 加载 .env 文件
load_dotenv()# 获取环境变量
api_key = os.getenv("OPENAI_API_KEY")
db_password = os.getenv("DATABASE_PASSWORD")print(f"API Key: {api_key}")
print(f"Database Password: {db_password}")

🔒 四、安全提示:不要将 .env 提交到 Git 仓库
为了防止 .env 文件被意外提交到 Git 仓库,你需要将它添加到 .gitignore 文件中。

在 .gitignore 文件中添加以下内容:

.env
*.log
__pycache__
*.pyc
*.pyo
*.pyd

✅ 总结
通过使用 环境变量 或 配置文件 ,你可以有效地避免 API Key 被硬编码在代码中,从而提升项目的安全性。对于本地开发,推荐使用 .env 文件配合 python-dotenv;对于生产环境,建议使用专业的密钥管理服务来保障 API Key 的安全。

http://www.xdnf.cn/news/325027.html

相关文章:

  • vue3+vite项目引入tailwindcss
  • ntdll!LdrpNameToOrdinal函数分析之二分查找
  • 数据可视化:php+echarts实现数据可视化
  • MySQL 中常见的日志
  • 《深度学习入门 基于Python的理论实现》思维导图
  • eclipse开发环境中缺少JavaEE组件如何安装
  • Go语言基础学习详细笔记
  • 数据实验分析
  • Transformer自学笔记
  • HarmonyOS 鸿蒙操作物联网设备蓝牙模块、扫描蓝牙、连接蓝牙和蓝牙通信
  • 如何查看电脑显卡配置参数 一文读懂
  • Python----神经网络(《Going deeper with convolutions》论文解读和GoogLeNet网络)
  • 第十二节:图像处理基础-图像平滑处理 (均值滤波、高斯滤波、中值滤波)
  • CTK的插件框架和QTUI集成方法
  • 回溯进阶(二):以解数独来深入了解映射
  • SpringBoot应急物资供应管理系统开发设计
  • 可视化图解算法34:二叉搜索树的最近公共祖先
  • 【算法】随机快速排序和随机选择算法
  • [Token]What Kind of Visual Tokens Do We Need? AAAI2025
  • python学智能算法(十一)|机器学习逻辑回归深入(Logistic回归)
  • skywalking服务安装与启动
  • AbMole的Calcein-AM/PI细胞双染试剂盒,精准区分细胞活死状态
  • Search After+PIT 解决ES深度分页问题
  • react+ts中函数组件父子通信方式
  • C#——NET Core 中实现汉字转拼音
  • Spring MVC Controller 方法的返回类型有哪些?
  • 项目优先级频繁变动,如何应对?
  • C++入门之认识整型
  • 使用OpenCV 和 Dlib 实现人脸融合技术
  • shell(11)