首页 > 解决方案 > 如何验证或检测 graph-ql java 中的附加请求参数?

问题描述

我们将 Graph-QL Java 用于我们的 GraphQL 服务器。我们的用例是验证额外的查询参数并抛出错误

突变请求:

mutation{actionHandler(action:"status",entity:"integration",ids:[1],value:"Run"){result}} OR 1=1

架构类:

public class ActionHandler {
    private String entity;
    private String action;
    private String value;
    private List<Integer> ids;
    private List<String> result;
}

上面的查询具有附加请求参数 OR 1=1。这些不是已定义架构的一部分。请注意,这是为了使用布尔条件验证漏洞攻击。

上面的查询给出的结果与实际模式请求给出的结果完全相同

预期/实际模式请求: mutation{actionHandler(action:"status",entity:"integration",ids:[1],value:"Run"){result}}

注入额外的布尔条件(OR 1=1)作为参数不操纵查询结果。当图 ql 本机解析器将突变查询转换为相应的模式对象时,似乎是那些被忽略的。

我们如何使用不属于模式请求的 GraphQL 本机库本身来验证其他输入参数?

标签: graphqlgraphql-java

解决方案


推荐阅读