Python Hardener

Polar Sponsor
爱发电 赞助
.NET 9.0

通过完整的安全审查、代码整洁重构、健壮的错误处理、正确的日志记录以及完整的文档字符串覆盖,强化 Python 脚本。

Python Hardener. 您正在使用一个或多个 Python 脚本, 并生成更正的硬化

功能概述

Python Hardener. 您正在使用一个或多个 Python 脚本, 并生成更正的硬化是一项面向实际任务的技能,主要用于相同的文件的版本—— 加上一个 Markdown 文档文件—— 而不使用;发明新的文件名 o。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Python Hardener

你将接收一个或多个 Python 脚本,并就地生成经过修正与加固的同名文件版本——同时附带一份 Markdown 格式的说明文档——整个过程不引入新文件名,也不围绕这些脚本构建迁移项目。

交付内容

  1. 原始 Python 文件本身,在原位置完成修正。严格保留原有文件名。
  2. 一份 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 文件(.md),包含以下章节:

  1. 概述(Overview) —— 一段话简述脚本的核心功能。
  2. 架构(Architecture) —— 使用 ASCII 图或表格展示主要组件及其相互关系。
  3. 配置(Configuration) —— 列出所消费的环境变量及默认值。
  4. API / 函数(API / Functions) —— 按模块列出所有公开函数(名称、签名、功能说明)的表格。
  5. 安全性(Security) —— 表格形式说明已应对的安全威胁及所采用的具体缓解措施。
  6. 错误处理(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 文件已存在且内容准确

相关专题

更多
Python Django REST Framework接口安全与认证体系实践
Python Django REST Framework接口安全与认证体系实践

本专题围绕 Django REST Framework 展开,深入讲解 API 认证、JWT 鉴权、权限控制、接口安全防护以及防攻击策略设计。通过完整后端案例,帮助开发者构建安全可靠的 Web API 服务体系。

2026.06.29

140

15

Python FastAPI异步微服务与高性能接口设计
Python FastAPI异步微服务与高性能接口设计

本专题聚焦 Python FastAPI 框架在高性能接口与微服务开发中的应用,讲解异步请求处理、依赖注入机制、路由设计、数据库异步操作以及接口性能优化策略。结合实际项目案例,帮助开发者构建高并发、低延迟的现代化后端服务架构。

2026.06.16

219

12

Python数据分析实战指南
Python数据分析实战指南

聚焦Python在数据分析领域的核心应用,涵盖Pandas、NumPy、Matplotlib等库的使用技巧、真实业务场景案例及性能优化方法。

2026.06.04

146

48

Python入门零基础通关合集
Python入门零基础通关合集

从安装环境、变量循环到函数与类,专为小白设计的手把手Python教程,配套100道实战练习题,快速掌握自动化与数据分析基础。

2026.06.03

334

26

Python 设计模式与代码架构教程合集
Python 设计模式与代码架构教程合集

以 Python 语言特性为基础,讲解经典设计模式的 Pythonic 实现方式,涵盖单例模式(模块级/元类/new)、工厂模式与注册表模式、策略模式(函数作为一等公民替代类继承)、观察者模式(信号与事件系统)、装饰器模式(语言原生支持)、代理模式(getattr 动态代理)、依赖注入(dependency-injector 库)、仓储模式(Repository Pattern)在数据层的应用,同时讲解 Python 项目的分层架构(领

2026.05.15

424

19

Python日志系统与监控告警教程大全
Python日志系统与监控告警教程大全

全面讲解 Python 应用的日志管理与监控方案,涵盖 logging 标准库的 Logger/Handler/Formatter/Filter 体系、日志级别规范与分模块配置、dictConfig / fileConfig 声明式配置、loguru 第三方库的简洁用法与结构化输出、日志轮转(RotatingFileHandler/TimedRotatingFileHandler)策略、JSON 格式结构化日志输出、ELK / Loki

2026.05.15

186

27

Python数据库与ORM实践
Python数据库与ORM实践

全面讲解 Python 中数据库操作的技术方案,涵盖 sqlite3 标准库的轻量数据库操作、PyMySQL / psycopg2 连接 MySQL / PostgreSQL、DB-API 2.0 规范与游标操作、SQL 注入防范与参数化查询、SQLAlchemy Core 表达式语言与 ORM 模型定义/查询/关联关系映射、Alembic 数据库迁移管理、连接池(SQLAlchemy Pool / DBUtils)配置与调优、异步数据

2026.05.11

171

19

Python Web框架FastAPI 全栈开发教程合集
Python Web框架FastAPI 全栈开发教程合集

以 FastAPI 为核心,讲解现代 Python Web API 的高效开发方式,涵盖路由定义与路径参数/查询参数/请求体绑定、Pydantic 模型的数据校验与序列化、依赖注入(Depends)系统的分层设计、中间件与 CORS 配置、OAuth2 + JWT 认证流程、后台任务(BackgroundTasks)、WebSocket 实时通信、SQLAlchemy 异步 ORM 集成、自动生成 OpenAPI/Swagger 交互文

2026.05.09

316

23

Python多线程、多进程与并发编程教程大全
Python多线程、多进程与并发编程教程大全

系统讲解 Python 的并发与并行编程体系,涵盖 GIL 全局解释器锁的原理与影响分析、threading 模块的线程创建/锁/事件/信号量、multiprocessing 模块的进程创建/进程间通信(Queue/Pipe/共享内存)、concurrent.futures 线程池与进程池的统一接口、I/O 密集型与 CPU 密集型任务的方案选择、多线程竞态条件排查与线程安全数据结构、subprocess 子进程管理,帮助开发者根据任务

2026.05.08

114

32

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程