⚡️一个高性能、零分配、动态的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 的解析器。