字符串转义
String Escaper
按 JSON、JavaScript、SQL、shell、CSV 和正则各自的规则转义字符串,也能反转义回去。
把一段文本转义成能放进字符串字面量里的形式——JSON、JavaScript、Python、Java、C#、SQL、shell 命令、CSV 字段或正则表达式——再反转义回来。每种目标有自己的规则,它们之间的差异正是注入漏洞藏身的地方。
RFC 8259:`\" \\ \/ \b \f \n \r \t`,其余用 `\uXXXX`。没有 `\'`,没有 `\x`,没有 `\0`。
文本
转义后的值
输入
0个字符
输出
0个字符
怎么用
选目标语言
选择器下方的说明写着这个目标实际转义什么。JSON 比 JavaScript 严格;模板字面量要多操心两个字符;单引号 shell 和双引号 shell 是两个不同的问题。
粘贴原始文本
换行、引号和非 ASCII 字符都会处理。出来的是字面量的*内部*——外面那对引号仍然由你来加。
看「可以干净地还原」
输出下方的统计会把结果反转义回来,和你输入的比较。如果它说不能,说明对这个目标来说转义是有损的,你粘出去的字符串不是你原来那个。
常见问题
转义之后我的 SQL 就安全了吗?
没有。转义一个字面量和参数化查询不是一回事,而且这个工具不知道你数据库的引号模式、字符集,也不知道这个值最终会不会落到一个引号不是分隔符的地方。用绑定参数;用这个工具来读一条查询,不要用它来构造生产环境的查询。
为什么 SQL 模式不用反斜杠?
因为标准 SQL 没有反斜杠转义——引号写两遍。反斜杠转义是 MySQL 的扩展,而假定它存在的代码正是相当一部分注入漏洞的来源。如果你需要 MySQL 的行为,那得是你有意为之。
`\uXXXX` 这个目标是做什么的?
它把每个非 ASCII 字符变成 `\uXXXX` 转义,代理对也包括在内。它最有用的方向是反过来:被只认 ASCII 的管道弄坏的 properties 文件或日志行,反转义之后中文就回来了。
单引号 shell 真的对任何字符串都安全吗?
对字符串本身,是的——POSIX 单引号里什么都没有特殊含义,一个引号写成 `'\''`。它防不住的是你调用的程序对这个参数的解释,以及不是 POSIX 的 shell。它是一条引用规则,不是沙箱。
可以从这些接进来
SQL 格式化
SQL Formatter
按可配置的关键字大小写、缩进和逗号位置格式化 SQL,覆盖主流方言。
HTML 实体编码
HTML Entity Encoder
转义和还原 HTML 实体,输出可选实体名、十进制或十六进制写法。
JSON 格式化与校验
JSON Formatter & Validator
把 JSON 美化成缩进形式或压成一行,校验语法并直接指出出错的行和列。
YAML 格式化与校验
YAML Formatter & Validator
统一 YAML 缩进并校验语法,把会让解析器崩掉的制表符和锚点错误标出来。
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
HTML 实体编码
HTML Entity Encoder
转义和还原 HTML 实体,输出可选实体名、十进制或十六进制写法。
JSON 格式化与校验
JSON Formatter & Validator
把 JSON 美化成缩进形式或压成一行,校验语法并直接指出出错的行和列。
列表格式转换
List Formatter
把多行文本转成逗号列表、带引号的 SQL IN 子句、JSON 数组或项目符号列表,也能反着来。
SQL 格式化
SQL Formatter
按可配置的关键字大小写、缩进和逗号位置格式化 SQL,覆盖主流方言。
Base64 编码解码
Base64 Encoder & Decoder
对文本和文件做 Base64 与 Base64URL 编解码,UTF-8 处理正确。
curl 转代码
curl to Code
把一条 curl 命令转成 fetch、axios、Python requests、Go、PHP 或 PowerShell 代码。