一个高性能、零分配、纯Go的动态JSON威胁保护系统

71 阅读2分钟

GOJTP

GoDoc

⚡️一个高性能、零分配、动态的JSON威胁
保护在
纯Go。?

包gojtp提供了一种快速的方法来验证动态JSON,并根据
配置的属性来保护
脆弱的JSON内容级攻击(JSON威胁保护)。

它也验证JSON,如果JSON是无效的,它将返回一个错误。

什么是JSON威胁保护

JSON请求容易受到攻击,其特点是元素和嵌套级别的异常膨胀

攻击者使用递归技术,通过使用巨大的
json文件消耗内存资源,使解析器不堪重负,最终使服务崩溃。

JSON威胁保护是描述通过对json结构定义一些限制,如对json的长度和深度验证
,将这种攻击的风险降到最低的术语,并帮助保护你的应用程序免受这种入侵。

有些情况下,你不想解析JSON,但又想确保JSON不会造成问题。比如说API网关。如果网关必须知道它所保护的所有服务的所有JSON模式,这将是一种痛苦。有一些XML验证器可以执行类似的功能。

开始使用

安装
要开始使用 gojtp,请安装 Go 并运行 go get。

$ go get -u github.com/ankur-anand/gojtp

性能

在 linux-amd64 上

BenchmarkTestifyNoThreatInBytes-4         500000              2628 ns/op               0 B/op          0 allocs/op

使用的JSON

{
    

创建一个验证器

所有的验证器参数都是可选的

检查所有选项的Godoc

验证实例

// with multiple config

错误

JTP在验证失败时返回以下错误信息。

错误信息
jtp.maxStringValueLengthReached.Max-[X]-Allowed.Found-[Y].
jtp.maxArrayElementCountReached.Max-[X]-Allowed.Found-[Y]。
jtp.maxKeyLengthReached.Max-[X]-Allowed.Found-[Y] 。
jtp.maxContainerDepthReached.Max-[X]-Allowed.Found-[Y].
jtp.maxObjectEntryCountReached.Max-[X]-Allowed.Found-[Y] 。
jtp.MalformedJSON

使用实例

package

联系我们

Ankur Anand@in_aanand

许可证

GOJTP的源代码是在MIT许可下提供的。

基于tidwall 的解析器。

GitHub

github.com/ankur-anand…