#graphql #depth #limit #query #analysis #validation #verify

graphql_depth_limit

一个小型库,用于对 GraphQL 查询进行深度限制分析

2 个版本

0.1.2 2020 年 4 月 30 日
0.1.1 2020 年 2 月 3 日
0.1.0 2020 年 2 月 3 日

#895 in HTTP 服务器

MIT/Apache

13KB
205

graphql_depth_limit

Crate

graphql_depth_limit 启发的 Rust 中 GraphQL 深度限制验证

将以下内容添加到您的 Cargo.toml

[dependencies]
graphql_depth_limit = "0.1.1"

并将其添加到您的 crate 根目录中(如果您使用的是 Rust 2015)

extern crate graphql_depth_limit;

以下是一个验证 GraphQL 查询的简单示例

use graphql_depth_limit::QueryDepthAnalyzer;

fn main() {
    let query = r#"
                query {
                  a {
                    b {
                      c
                    }
                  }
                }
            "#;
    let depth = match QueryDepthAnalyzer::new(query, vec![], |_a, _b| true) {
        Ok(validator) => validator.verify(5),
        Err(val) => Err(DepthLimitError::Parse(val))
    };
    asssert_eq!(depth.ok()?, 3);
}

lib.rs:

GraphQL 查询深度分析的实用工具

graphql_depth_limit 提供实用工具,以便轻松识别可能的恶意查询(深度高)。

快速入门

示例

use graphql_depth_limit::QueryDepthAnalyzer;

let query = r#"
    query {
        hello {
            world
        }
    }
"#;
let analyzer = QueryDepthAnalyzer::new(query, vec![], |_a, _b| true).unwrap();
let verify_result = analyzer.verify(5);

依赖项

~1.5MB
~27K SLoC