Поскольку на это не нашли ответы пользователи, которые ответили ему вслух, я отправлю их ответы.
- Запросы GraphQL проверяются на схему, которая была построена явно для предоставления данных клиенту. SQL не проверяет ваш запрос на что-либо, кроме структуры схемы DB.
- Теоретически ваша конечная точка GraphQL имеет некоторую безопасность для проверки того, что пользователю разрешено запрашивать данные в начальной точке своего запроса. Как только они находятся внутри схемы, основанной на графике, разрешения являются неотъемлемой частью определения схемы graphQL, и инъекция ничего не принесет.
- Выполнение версии SQL, которая не подлежит инъекции, будет включать некоторые из тех же валидаций, что и в GraphQL. Некоторая проверка того, что все запрошенные данные/мутации разрешены. Как указано в чате, «Injection не является проблемой, присущей SQL».
Ответы зачислены на и Чарли samwgoldman от GraphQL/# общего Слак чата.
Я бы добавил, что переменные Query GraphQL исключают возможность «инъекций». Похожий на "?" в SQLite переменные Query Variance позволяют помещать переменные семантически в запрос, и GraphQL будет проверять перед запуском запроса, чтобы предоставленные значения для переменных были действительными. –
Найдите хорошую статью о GraphQL и безопасности/инъекциях здесь: https://mikewilliamson.wordpress.com/2016/09/15/graphql-and-security/ – joost