通过完整的安全审查、代码整洁重构、健壮的错误处理、正确的日志记录以及完整的文档字符串覆盖,强化 Python 脚本。
Python Hardener. 您正在使用一个或多个 Python 脚本, 并生成更正的硬化
功能概述
Python Hardener. 您正在使用一个或多个 Python 脚本, 并生成更正的硬化是一项面向实际任务的技能,主要用于相同的文件的版本—— 加上一个 Markdown 文档文件—— 而不使用;发明新的文件名 o。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
Python Hardener
你将接收一个或多个 Python 脚本,并就地生成经过修正与加固的同名文件版本——同时附带一份 Markdown 格式的说明文档——整个过程不引入新文件名,也不围绕这些脚本构建迁移项目。
交付内容
- 原始 Python 文件本身,在原位置完成修正。严格保留原有文件名。
- 一份 Markdown 文档文件,命名为
,涵盖所应用的安全措施以及各模块的工作原理。.md
除非用户明确要求,否则不得创建 .env.example、迁移指南、requirements.txt 或任何未在上述列表中列出的文件。
分析阶段 —— 需检查的问题
在做出任何修改前,请通读整个文件,并在脑中归纳出以下四类问题:
安全性
- SQL/NoSQL 注入 —— 表名、列名或用户输入通过 f-string 或
%格式化方式直接拼接到查询字符串中。修复方式:使用白名单校验(如assert table in frozenset({...}));对值参数使用参数化查询。 - Shell 注入 —— 任何使用
shell=True的subprocess调用,或把命令拼接为单个字符串再执行的情况。修复方式:改用列表形式传参,且禁用shell=True。 - 路径遍历(Path Traversal) —— 用户输入参与构造文件路径,但未调用
Path.resolve()并配合白名单校验。 - 工作目录(CWD)变更 ——
os.chdir()会永久改变进程当前工作目录。应替换为类似subprocess.run(["git", "-C", repo_path, ...])的方式,或使用对应 API 的cwd=参数。 - 代码中硬编码密钥 —— 如 API key、密码等明文写死在代码中。需标记为需迁移至环境变量。
错误处理
- 裸
except:—— 捕获所有异常,包括KeyboardInterrupt、SystemExit和MemoryError。应替换为具体异常类型,例如:json.JSONDecodeError、subprocess.CalledProcessError、subprocess.TimeoutExpired、OSError、ValueError等;且必须记录捕获到的异常。 - 异常块中静默的
pass—— 隐藏失败信息。至少应添加logger.warning(...)或logger.error(...),并包含异常详情。 - 缺少
finally或上下文管理器 —— 数据库连接、文件句柄或网络套接字未被显式关闭。应使用with语句或@contextmanager装饰器进行资源管理。
性能与资源管理
- 每次调用都打开文件 —— 例如
log()函数每次运行都重新打开日志文件。应一次性配置好日志处理器(如RotatingFileHandler),并在后续复用。 - 数据库连接泄漏 —— 每个方法内反复调用
connect(),且从不关闭连接。应封装为@contextmanager,确保在finally块中调用conn.close()。 - 模块级副作用 —— 在导入时执行
Path.mkdir()、sqlite3.connect()或网络请求等操作。应移至main()或__init__()中延迟执行。 - 非原子写入 —— 直接写入状态/配置文件存在“撕裂写入(torn write)”风险(如进程被中断)。应使用
tempfile.mkstemp()创建临时文件,再以os.replace()原子替换目标文件。
整洁代码
- 将单字母或含义模糊的变量重命名为具有描述性的名称。
- 拆分承担多项职责的函数。
- 为所有函数签名添加类型提示(type hints)。
重写规则
须落实分析阶段识别出的所有修复项。此外还需满足以下要求:
日志记录(Logging) —— 将所有用于运行时输出的 print() 语句,以及手写的文件追加式日志逻辑,统一替换为 Python 标准 logging 模块:
- 通过一个初始化函数统一配置日志(禁止在模块顶层配置,也禁止每次调用都重复配置)。
- 文件输出使用
RotatingFileHandler(最大 10 MB,保留 7 个备份),控制台输出使用StreamHandler。 - 日志级别从环境变量读取,若未设置则默认为
INFO。 - 记录错误时使用
logger.error("...", exc_info=True),或显式包含异常字符串,确保根本原因始终可见。
文档字符串(Docstrings) —— 为每个公开函数、方法和类添加 Google 风格文档字符串:
def export_csv(self, table: str) -> Optional[Path]:
"""
Exports a table as a CSV file.
Args:
table: Table name — must be in {'documents', 'skills', 'symlinks'}.
Returns:
Path to the generated CSV file, or None if the table is empty.
Raises:
ValueError: If the table name is not in the allowlist.
sqlite3.Error: On database errors.
OSError: On write errors.
"""
语言专属入口(Language-specific stubs) —— 若代码生成多种编程语言的骨架文件,则每种语言均需提供符合其惯用法的入口点(例如:Perl、Tcl、Shell 等不应使用 Python 风格的 def main(): 或 if __name__ == "__main__":)。
文档文件
编写一份 Markdown 文件(),包含以下章节:
- 概述(Overview) —— 一段话简述脚本的核心功能。
- 架构(Architecture) —— 使用 ASCII 图或表格展示主要组件及其相互关系。
- 配置(Configuration) —— 列出所消费的环境变量及默认值。
- API / 函数(API / Functions) —— 按模块列出所有公开函数(名称、签名、功能说明)的表格。
- 安全性(Security) —— 表格形式说明已应对的安全威胁及所采用的具体缓解措施。
- 错误处理(Error handling) —— 表格形式映射每个函数所捕获的异常类型,及其失败时的行为。
风格约束
- 除非原始作者的结构或命名明显有害(例如:一个关键功能函数被命名为
x),否则应尽量保留其整体结构与命名习惯。 - 除非用户明确要求,否则不得添加版本号、更新日志或迁移说明。
- 除文档
.md文件外,不得引入任何新文件名。 - 若用户已存在
.env文件且明确将其作为事实来源(source of truth),则不得生成.env.example。
交付前检查清单
- 所有裸
except:已替换为具体异常类型 + 日志记录 - 已移除所有
os.chdir(),改用subprocess ... -C或cwd=参数替代 - SQL 注入与 Shell 注入漏洞均已修复
- 所有连接与文件句柄均通过上下文管理器正确关闭
- 日志系统仅初始化一次,而非每次调用都重新配置
- 所有状态/配置文件的写入均采用原子方式(
tempfile+os.replace()) - 所有公开函数均已添加含
Args/Returns/Raises的文档字符串 - 所有函数签名均已添加类型提示
- 所有模块级副作用均已移至
main()或__init__()中 - 文档
.md文件已存在且内容准确
热门AI工具
相关专题
本专题围绕 Django REST Framework 展开,深入讲解 API 认证、JWT 鉴权、权限控制、接口安全防护以及防攻击策略设计。通过完整后端案例,帮助开发者构建安全可靠的 Web API 服务体系。
140
2026.06.29
本专题聚焦 Python FastAPI 框架在高性能接口与微服务开发中的应用,讲解异步请求处理、依赖注入机制、路由设计、数据库异步操作以及接口性能优化策略。结合实际项目案例,帮助开发者构建高并发、低延迟的现代化后端服务架构。
219
2026.06.16
聚焦Python在数据分析领域的核心应用,涵盖Pandas、NumPy、Matplotlib等库的使用技巧、真实业务场景案例及性能优化方法。
146
2026.06.04
以 Python 语言特性为基础,讲解经典设计模式的 Pythonic 实现方式,涵盖单例模式(模块级/元类/new)、工厂模式与注册表模式、策略模式(函数作为一等公民替代类继承)、观察者模式(信号与事件系统)、装饰器模式(语言原生支持)、代理模式(getattr 动态代理)、依赖注入(dependency-injector 库)、仓储模式(Repository Pattern)在数据层的应用,同时讲解 Python 项目的分层架构(领
424
2026.05.15
全面讲解 Python 应用的日志管理与监控方案,涵盖 logging 标准库的 Logger/Handler/Formatter/Filter 体系、日志级别规范与分模块配置、dictConfig / fileConfig 声明式配置、loguru 第三方库的简洁用法与结构化输出、日志轮转(RotatingFileHandler/TimedRotatingFileHandler)策略、JSON 格式结构化日志输出、ELK / Loki
186
2026.05.15
全面讲解 Python 中数据库操作的技术方案,涵盖 sqlite3 标准库的轻量数据库操作、PyMySQL / psycopg2 连接 MySQL / PostgreSQL、DB-API 2.0 规范与游标操作、SQL 注入防范与参数化查询、SQLAlchemy Core 表达式语言与 ORM 模型定义/查询/关联关系映射、Alembic 数据库迁移管理、连接池(SQLAlchemy Pool / DBUtils)配置与调优、异步数据
171
2026.05.11
以 FastAPI 为核心,讲解现代 Python Web API 的高效开发方式,涵盖路由定义与路径参数/查询参数/请求体绑定、Pydantic 模型的数据校验与序列化、依赖注入(Depends)系统的分层设计、中间件与 CORS 配置、OAuth2 + JWT 认证流程、后台任务(BackgroundTasks)、WebSocket 实时通信、SQLAlchemy 异步 ORM 集成、自动生成 OpenAPI/Swagger 交互文
316
2026.05.09
系统讲解 Python 的并发与并行编程体系,涵盖 GIL 全局解释器锁的原理与影响分析、threading 模块的线程创建/锁/事件/信号量、multiprocessing 模块的进程创建/进程间通信(Queue/Pipe/共享内存)、concurrent.futures 线程池与进程池的统一接口、I/O 密集型与 CPU 密集型任务的方案选择、多线程竞态条件排查与线程安全数据结构、subprocess 子进程管理,帮助开发者根据任务
114
2026.05.08
热门下载
相关下载
精品课程
共0课时 | 0人学习
共0课时 | 0人学习
共0课时 | 0人学习
最新文章
