pallets

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 类系统的团队
  • 需要安全渲染用户输入的应用开发者

快速上手

  1. 安装
pip install MarkupSafe
  1. 转义不可信文本
from markupsafe import escape, Markup

escape('<script>alert(1)</script>')
Markup('<strong>Hi</strong>')
  1. 多数场景无需单独安装,Jinja2、Flask 等会自动带上它

核心优势

  • 默认安全:转义发生在拼接与格式化环节,减少遗漏
  • 语义清晰:Markup 类型让哪些内容已安全一目了然
  • 轻量可靠:职责单一,被主流模板引擎长期验证

系统要求

项目 要求
语言 Python
操作系统 跨平台
额外依赖 无强制依赖

注意事项

  • 不是 HTML 净化器:它只做字符转义,富文本白名单过滤需要专用净化库
  • 慎用 Markup:把不可信内容包成 Markup 会跳过转义,务必只标记确实安全的文本

历史版本

排序