Pull to refresh

Comments 11

Очень интересно! Спасибо! Только по вашей статье начал немного понимать что и как работает в GraphQL.
Все же GraphQL дырявый или нет? Хотелось бы прочитать более конкретные выводы.

REST API предоставляет ту информацию, которую в API заложит разработчик, то есть в случае, если вам необходимо получить больше или меньше информации, чем предполагает API, то нужны будут дополнительные действия. Опять же, GraphQL выдаёт точно запрашиваемую информацию.
Полезным дополнением будет то, что в GraphQL есть схема, описывающая, как и какие данные клиент может получить.

Для получания данных, не входящих в текущую GraphQL схему, все же надо дергать программистов, так что нельзя сказать, что GraphQL имеет какое-то преимущество перед REST.
GraphQL дырявый ровно настолько, насколько это реализует разработчик. Нельзя сказать дырявый REST или нет? Дырявый GraphQL или нет? Это стандарты, которые описывают то, как должно быть устроено API-приложение. А дырявым Вы его сделаете или нет — решать Вам.
Хотелось бы тогда в выводах услышать некоторые рекомендации по организации сервиса, а то упоминаются возможные проблемы, а вот способов их избежать — нет. Спасибо.
Целью статьи было написать про пентест, как было указано в названии. Про безопасность GraphQL Вы можете прочитать в конце статьи по ссылке.
Спасибо за статью! А можно ли как-то понять, откуда конкретно qraphql берет информацию для ответа? Например, что name из запроса — это поле name в таблице tablename?
В рамках интроспекции Вы сначала узнаете какие запросы существуют в принципе, затем какие есть поля у каждого запроса можно узнать по примеру 3, что в статье. Чтобы точнее понять, какие поля есть и что из них что означает рекомендую потестировать приложения, указанные в начале статьи. После этого многие вопросы сами решатся.
mutation {
createPerson(username:«Vasya», password: «Qwerty1», isAdmin: True) {
}
}

Если в схеме не объявлено поле isAdmin, то GraphQL не примет на его на вход, даже если в самой модели данных куда пишет запрос такое поле существует.
А если же разработчик объявил в клиентской съеме такое поле, то это большой вопрос, доверять ли разработку АПИ этому человеку.
Согласен, однако наш мир не идеален и человеческий фактор почти всегда присутствует. Пентест отчасти и нужен для того, чтобы таких ошибок было как можно меньше, ведь даже крупные компании могут допускать такие промахи:
Github authorization bypass vulnerability
В тексте допущена ошибка?
В GraphQL существует 3 основных вида запросов:

  • Query
  • Mutation
  • Description



Вместо Subscription указано Description?
Sign up to leave a comment.