2015-08-30 20 views

Odpowiedz

11

Ponieważ ta odpowiedź nie została udzielona przez użytkowników, którzy odpowiedzieli na nią w luźnym kanale, opublikuję ich odpowiedzi.

  1. Kwerendy GraphQL są sprawdzane względem schematu, który został zbudowany jawnie w celu udostępnienia danych klientowi. SQL nie sprawdza poprawności kwerendy przed czymkolwiek innym niż struktura schematu DB.
  2. Teoretycznie twój punkt końcowy GraphQL ma pewne zabezpieczenia, które umożliwiają sprawdzanie, czy użytkownik może wysyłać zapytania do danych w punkcie początkowym zapytania. Gdy już znajdują się w schemacie opartym na wykresie, uprawnienia są nieodłączne od definicji schematu graficznego, a wtrysk niczego nie osiągnie.
  3. Tworzenie wersji SQL, która nie jest przedmiotem iniekcji, wymagałoby zastosowania tych samych sprawdzeń, które wykonuje GraphQL. Pewne zatwierdzenie, że wszystkie żądane dane/mutacje są dozwolone. Jak cytuje się na czacie, "Injection nie jest problemem nieodłącznym dla SQL".

Odpowiedzi dobro charlie i samwgoldman z GraphQL/# Slack ogólnym czacie.

+2

Dodam, że zmienne zapytań GraphQL eliminują możliwość problemów z "wtryskiem". Podobny do "?" w SQLite, zmienne zapytań GraphQL umożliwiają wstawianie zmiennych semantycznie w obrębie zapytania, a GraphQL sprawdza przed uruchomieniem zapytania, czy podane wartości zmiennych są prawidłowe. –

+0

Znajdź ładny artykuł na temat GraphQL i zabezpieczeń/zastrzyków tutaj: https://mikewilliamson.wordpress.com/2016/09/15/graphql-and-security/ – joost

Powiązane problemy