Pull to refresh

Comments 3

Спасибо за статью, для себя сделал пару заметок. Также стоит сделать оговорку, что это уязвимости не GraphQL, как такового, а проблемы его реализаций в конкретных фреймворках и либах.

Например, SQL инъекция лечится на другом уровне, а не в GraphQL и том же REST. Или, например, защититься от DoS в Apollo Server можно одним флажком и whitelist запросов (хотя есть простые решения для ограничения "глубоких" и рекурсивных запросов)

Рисунок 9. Один и тот же запрос с разными псевдонимами.

Я думал это недоработка реализации GraphQL API в java, но видимо проблема куда шире. У нас по сути ReadOnly древовидный запрос атрибутов, из которого можно выкинуть все псевдонимы перед вычислением (объединить {aa: abc{def}} и bb: abc{hij} сделав abc{def,hij}) и только получив все нужные данные вернуть их клиенту со всеми псевдонимами. Странно, что этого нет по умолчанию во всех реализациях GraphQL API.

А что из списка кроме DoS специфично именно для API на GraphQL? Любую другую атаку можно повторить на тот же Swagger, другие фреймворки для API и обычный «простой» API.

Sign up to leave a comment.