Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/owasp/json-sanitizer
通用工具静态分析加密/解密工具漏洞分析代码分析Web安全
GitHubowasp/json-sanitizer

json-sanitizer

给定类似 JSON 的内容,JSON Sanitizer 会将其转换为有效的 JSON。

查看仓库
21955432年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

json-sanitizer Fuzzing Status

给定类似JSON的内容,JSON Sanitizer 会将其转换为有效的JSON。

入门 - 联系方式

它可以附加在数据管道的任一端,以帮助满足Postel原则:

在自己做什么时要保守,在接受别人给予时要开放

应用于来自他人的类似JSON的内容时,它会生成格式良好的JSON,应能满足您使用的任何解析器。

在发送之前应用于您的输出时,它会纠正编码中的小错误,并使您的JSON更易于嵌入HTML和XML。

动机

Architecture

许多应用程序有大量代码使用临时方法生成JSON输出。

通常这些输出在通过网络发送之前都会经过少量框架代码。这少量框架代码可以使用此库确保临时输出符合标准,并且安全地传递给(过于)强大的反序列化器,例如Javascript的eval操作符。

应用程序也经常有从各种来源接收JSON的Web服务API。当这个JSON是使用临时方法创建时,此库可以将其整理成易于解析的形式。

通过将此库挂接到发送和接收请求及响应的代码中,此库可以帮助软件架构师确保系统范围的安全性和良好格式保证。

输入

消毒器接受类似JSON的内容,并像JS的eval一样解释它。具体来说,它处理以下非标准结构。

结构策略
'...'单引号字符串转换为JSON字符串。
\xAB十六进制转义转换为JSON Unicode转义。
\012八进制转义转换为JSON Unicode转义。
0xAB十六进制整数字面量转换为JSON十进制数字。
012八进制整数字面量转换为JSON十进制数字。
+.5十进制数字被强制转换为JSON的更严格格式。
[0,,2]数组中的省略项用null填充。
[1,2,3,]删除尾随逗号。
{foo:"bar"}未加引号的属性名称被引用。
//comments删除JS风格的行注释和块注释。
(...)删除分组括号。

消毒器修复缺失的标点、结束引号以及不匹配或缺失的闭合括号。如果输入仅包含空白,则替换为有效的JSON字符串null。

输出

输出是符合RFC 4627定义的格式良好的JSON。输出满足以下附加属性:

  • 输出将不包含子字符串(不区分大小写)"<script"、"</script"或"<!--",因此可以无需额外编码嵌入到HTML script元素中。
  • 输出将不包含子字符串"]]>",因此可以无需额外编码嵌入到XML CDATA段中。
  • 输出是有效的Javascript表达式,因此可以通过Javascript的内置eval(包裹在括号中后)或JSON.parse进行解析。具体来说,输出将不包含任何嵌有JS新行符(U+2028段落分隔符或U+2029行分隔符)的字符串字面量。
  • 输出仅包含有效的Unicode标量值(没有孤立的UTF-16代理对),这些值在XML中是允许不转义的。

安全性

由于输出是格式良好的JSON,将其传递给eval不会产生副作用,也没有自由变量,因此既不是代码注入向量,也不是秘密泄露向量。

此库仅确保JSON字符串→Javascript对象阶段没有副作用且不解析自由变量,并且无法控制其他客户端代码随后如何解释生成的Javascript对象。因此,如果客户端代码获取了由攻击者控制的解析数据的一部分,并将其传回给诸如eval或innerHTML之类的强大解释器,则该客户端代码可能会遭受非预期的副作用。

root@kitploit:~
var myValue = eval(sanitizedJsonString);  // safe
var myEmbeddedValue = eval(myValue.foo);  // possibly unsafe

此外,消毒JSON无法保护应用程序免受Confused Deputy attacks

root@kitploit:~
var myValue = JSON.parse(sanitizedJsonString);
addToAdminstratorsGroup(myValue.propertyFromUntrustedSource);

性能

当输入已经是满足上述属性的有效JSON时,sanitize方法将返回输入字符串而不分配新缓冲区。因此,如果用于通常格式良好的输入,它只有最小的内存开销。

sanitize方法的时间复杂度为O(n),其中n是输入以UTF-16代码单元计的长度。

下载工具