MarkupSafe 是 Pallets 出品的 Python 转义库,提供可安全用于 HTML 和 XML 的字符串对象,自动转义特殊字符以防注入攻击,是 Jinja2 模板引擎的底层依赖。
- 3.0.4
- 发布于
- 25 天前
- 699
- 星标
- 18,258
- 下载
- 同步于
- 8 天前
最新版本
3.0.42026年10月3日 07:09下载慢?可在上方随时切换镜像源
项目说明
项目概述
MarkupSafe 实现了一个可安全用于 HTML 和 XML 的文本对象。它把具有特殊含义的字符替换成转义形式,让不可信的用户输入可以安全地显示在页面上,从而缓解注入攻击。Markup 对象是 str 的子类,被标记为安全的文本不会被重复转义,Jinja2 等模板引擎正是依赖它实现自动转义。
| 项目 | 内容 |
|---|---|
| 平台 | 跨平台 |
| 语言 | Python |
| 许可 | BSD 三条款 |
| 典型用户 | Jinja2、Flask 等模板体系 |
不可信的字符串转义后再上页面,模板安全的第一道防线。
主要功能
- escape 转义:把特殊字符替换为 HTML 实体,并包装成 Markup 对象
- Markup 安全标记:str 子类,标记为安全的文本参与拼接时不会被再次转义
- 运算即转义:对 Markup 拼接、格式化时,参数自动转义
- html 协议:对象可实现 html 方法提供自定义的安全输出
- soft_str 辅助:把对象转为普通字符串但不标记安全,避免误放行
- 模板引擎底座:Jinja2 等依赖它实现自动转义机制
适用人群
- Web 模板与框架开发者
- 直接拼装 HTML 片段的后端工程师
- 开发内容发布或 CMS 类系统的团队
- 需要安全渲染用户输入的应用开发者
快速上手
- 安装
pip install MarkupSafe- 转义不可信文本
from markupsafe import escape, Markup
escape('<script>alert(1)</script>')
Markup('<strong>Hi</strong>')- 多数场景无需单独安装,Jinja2、Flask 等会自动带上它
核心优势
- 默认安全:转义发生在拼接与格式化环节,减少遗漏
- 语义清晰:Markup 类型让哪些内容已安全一目了然
- 轻量可靠:职责单一,被主流模板引擎长期验证
系统要求
| 项目 | 要求 |
|---|---|
| 语言 | Python |
| 操作系统 | 跨平台 |
| 额外依赖 | 无强制依赖 |
注意事项
- 不是 HTML 净化器:它只做字符转义,富文本白名单过滤需要专用净化库
- 慎用 Markup:把不可信内容包成 Markup 会跳过转义,务必只标记确实安全的文本
历史版本
排序