Как проверить или определить дополнительный параметр запроса в Graph-QL Java? - PullRequest
1 голос
/ 06 марта 2019

Мы используем 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;
}

Выше запроса с дополнительным параметром запроса ИЛИ 1 = 1. они не являются частью определенной схемы. обратите внимание, что это было дано для проверки атаки уязвимости с использованием логического условия.

запрос выше дает те же результаты, что и фактический запрос схемы

Ожидаемый / фактический запрос схемы: Мутация {actionHandler (действие: "Статус", сущность: "интеграция", иды: [1], значение: "Run") {результат}}

вводит дополнительное логическое условие (OR 1 = 1), поскольку параметр не манипулирует результатами запроса. похоже, это было проигнорировано, когда собственный анализатор графа ql преобразовал запрос мутации в соответствующий объект схемы.

как мы можем проверить дополнительный входной параметр, используя саму собственную библиотеку GraphQL, которая не является частью запроса схемы?

...