Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jak zabezpieczyczyć publiczne API GraphQL

Jak zabezpieczyczyć publiczne API GraphQL

GraphQL umożliwia łatwe tworzenie dowolnie skomplikowanych zapytań.

Dzięki temu twórcy aplikacji frontendowych i mobilnych mają prostsze życie.

Niestety hackerzy i włamywacze również korzystają z tych dobrodziejstw.

W tej prezentacji poznasz najczęstsze problemy ataki typu DDoS, Brute Force oraz sposoby pozwalające na odpieranie tych ataków.

85977ebfe59c2ee669f2196930f1a701?s=128

Michał Taszycki

April 15, 2021
Tweet

Transcript

  1. JAK ZABEZPIECZYĆ PUBLICZNE API GRAPHQL? ☠

  2. GraphQL.pl/click KOD ŹRÓDŁOWY, WSZYSTKIE NARZĘDZIA, SLAJDY, ODNOŚNIKI I PROMOCJE

  3. DLA KOGO JEST TA PREZENTACJA?

  4. DLA KOGO? ‣ Znasz już podstawy GraphQL ‣ Chcesz stworzyć

    swój pierwszy publiczny serwer GraphQL ‣ Uważasz, że nie da się dobrze zabezpieczyć serwera GraphQL
  5. DLA KOGO NIEKONIECZNIE? ‣ Wiesz już wszystko o GraphQL ‣

    Radzisz sobie z atakami Brute Force i DOS/DDOS ‣ Nie interesuje Cię GraphQL? ‣ Uważasz, że REST API zawsze wygrywa z GraphQL
  6. FAKTY SĄ TAKIE

  7. GRAPHQL JEST LEPSZY NIŻ REST API

  8. GRAPHQL JEST LEPSZY NIŻ REST API

  9. ALE…

  10. None
  11. TRUDNIEJ GO ZABEZPIECZYĆ

  12. ZABEPIECZANIE DOWOLNEGO API = TEMAT RZEKA

  13. SKUPIMY SIĘ NA 2 RODZAJACH ATAKÓW

  14. KTÓRE NIESTETY W GRAPHQL SĄ BAJECZNIE PROSTE

  15. 1. DOS/DDOS

  16. 1. DOS/DDOS 2. BRUTE FORCE

  17. MAMY TAKIE API

  18. CO MOŻE PÓJŚĆ NIE TAK?

  19. CO MOŻE PÓJŚĆ NIE TAK?

  20. ZOBACZMY😁

  21. 100 UŻYTKOWNIKÓW KAŻDY MA 10 PRZYJACIÓŁ

  22. 😀

  23. 100x 😀

  24. DOSTAJEMY 100 ELEMENTÓW 100x 😀

  25. 😀

  26. 100x 😀

  27. 100x 10x 🙂

  28. DOSTAJEMY 1000 ELEMENTÓW 100x 10x 🙂

  29. 😀

  30. 100x 😀

  31. 100x 10x 🙂

  32. 100x 10x 10x 😐

  33. DOSTAJEMY 10 000 ELEMENTÓW 100x 10x 10x 😐

  34. 😀

  35. 100x 😀

  36. 100x 10x 🙂

  37. 100x 10x 10x 😐

  38. 100x 10x 10x 10x 🙁

  39. 100x 10x 10x 10x 10x 😳

  40. DOSTAJEMY 1 000 000 ELEMENTÓW 100x 10x 10x 10x 10x

    😱
  41. DDOS W GRAPHQL JEST NIEPOTRZEBNY

  42. JEDNO PROSTE ZAPYTANIE = DENIAL OF SERVICE

  43. JAK TEMU ZARADZIĆ?

  44. DOPUSZCZAĆ MAKSYMALNĄ GŁĘBOKOŚĆ ZAPYTANIA

  45. None
  46. 😀

  47. OK A CO JEŚLI…?

  48. 10000 UŻYTKOWNIKÓW KAŻDY MA 1000 PRZYJACIÓŁ

  49. 😀

  50. 10 000x 😐

  51. 1000x 10 000x 😳

  52. DOSTAJEMY 10 000 000 ELEMENTÓW W TABLICY 1000x 10 000x

    😱
  53. JAK TEMU ZARADZIĆ?

  54. DODAĆ STRONICOWANIE

  55. 1. NOWY TYP SKALARNY

  56. 2. STRONICOWANIE W SCHEMA

  57. 2. STRONICOWANIE W SCHEMA

  58. 3. OBSŁUGA W RESOLVERACH

  59. 3. OBSŁUGA W RESOLVERACH

  60. 😀

  61. 😀 10x

  62. 😀 10x 10x

  63. 🙂 10x 10x 10x

  64. 10x 10x 10x 10x 😐

  65. DOSTAJEMY 10 000 ELEMENTÓW 10x 10x 10x 10x 😐

  66. MOŻEMY ROZLUŹNIĆ LIMIT GŁĘBOKOŚCI (ALE NIE WYELIMINOWAĆ)

  67. OK A CO JEŚLI…?

  68. KTOŚ PODA ZBYT DUŻY LIMIT?

  69. None
  70. A NIC 😃

  71. OK A CO JEŚLI…?

  72. KTOŚ UŻYJE ALIASÓW?

  73. 😀 …

  74. 😀 … 10x

  75. 😀 … 10x 10x

  76. 😀 … 10x 10x +

  77. 😀 … 10x 10x + 10x 10x

  78. 😀 … 10x 10x + 10x 10x + 10x 10x

  79. 😀 … 10x 10x + 10x 10x + 10x 10x

  80. 😮 …

  81. 🥺 … 10x 10x

  82. 😢 … 10x 10x + 10x 10x

  83. 😰 … 10x 10x + 10x 10x + 10x 10x

  84. 😭 … (10x10) x 1 000 000

  85. 🤯 … DOSTAJEMY 100 000 000 ELEMENTÓW

  86. ALIASY UMOŻLIWIAJĄ TEŻ ATAKI TYPU…

  87. BRUTE FORCE

  88. MAMY TAKIE API

  89. 1. NIE PAMIĘTAM HASŁA

  90. 1. NIE PAMIĘTAM HASŁA

  91. 2. PROSZĘ O RESET

  92. 2. PROSZĘ O RESET

  93. 3. DOSTAJĘ TOKEN

  94. 4. ZMIENIAM HASŁO

  95. 4. ZMIENIAM HASŁO

  96. 5. LOGUJĘ SIĘ

  97. 5. LOGUJĘ SIĘ

  98. BEZPIECZNE?

  99. BEZPIECZNE?

  100. NIE MASZ EMAILA I TOKENA? NIE ZMIENISZ HASŁA 😏

  101. OK A CO JEŚLI…?

  102. MASZ EMAIL? ZGADNIESZ TOKEN? 🤔

  103. 1. ZGADUJĘ

  104. 1. ZGADUJĘ

  105. 1. ZGADUJĘ

  106. 1. ZGADUJĘ

  107. 2. LOGUJĘ SIĘ

  108. 2. LOGUJĘ SIĘ

  109. JAK TEMU ZARADZIĆ?

  110. 1. GENERUJ BEZPIECZNIEJSZE TOKENY

  111. NIE TAKIE! 1. GENERUJ BEZPIECZNIEJSZE TOKENY

  112. NIE TAKIE! 1. GENERUJ BEZPIECZNIEJSZE TOKENY

  113. 🤡 NIE TAKIE! 1. GENERUJ BEZPIECZNIEJSZE TOKENY

  114. 2. UTRUDNIJ BRUTE FORCE

  115. ANALIZA KOSZTU ZAPYTANIA

  116. ANALIZA KOSZTU ZAPYTANIA

  117. ANALIZA KOSZTU ZAPYTANIA

  118. DYREKTYWA KONTROLI KOSZTU

  119. MNOŻYMY KOSZT PRZEZ ROZMIAR STRONY

  120. MNOŻYMY KOSZT PRZEZ ROZMIAR STRONY

  121. NADAJEMY DUŻY KOSZT NIEBEZPIECZNYM OPERACJOM

  122. 😀

  123. 😀

  124. 😀

  125. 😀

  126. 😀

  127. 😀

  128. OK A CO JEŚLI…?

  129. KTOŚ PUŚCI WIELE ZAPYTAŃ?

  130. LIMITUJEMY JE

  131. ALBO NA POZIOMIE SERWERA (TAK SAMO JAK W REST API)

  132. ALBO NA POZIOMIE ZAPYTANIA GRAPHQL

  133. DODAJEMY DYREKTYWĘ RATE LIMIT

  134. DODAJEMY DO KONTEKSTU IDENTYFIKATOR KLIENTA

  135. KONFIGURUJEMY DYREKTYWĘ RATE LIMIT

  136. DEFINIUJEMY DYREKTYWĘ W SCHEMA

  137. DEFINIUJEMY JAK CZĘSTO MOŻNA WYWOŁAĆ ZAPYTANIE/MUTACJĘ

  138. None
  139. 😀

  140. 2 SEKUNDY PÓŹNIEJ

  141. 😀 2 SEKUNDY PÓŹNIEJ

  142. TO WYSTARCZY NA POCZĄTEK

  143. 1.OGRANICZ GŁĘBOKOŚĆ

  144. 1.OGRANICZ GŁĘBOKOŚĆ 2.STRONICUJ DANE

  145. 1.OGRANICZ GŁĘBOKOŚĆ 2.STRONICUJ DANE 3.OGRANICZ CZĘSTOTLIWOŚĆ

  146. 1.OGRANICZ GŁĘBOKOŚĆ 2.STRONICUJ DANE 3.OGRANICZ CZĘSTOTLIWOŚĆ 4.ANALIZUJ KOSZT (OPCJONALNIE)

  147. A PRZEDE WSYSTKIM

  148. MONITORUJ ZAPYTANIA! (MUSISZ WIEDZIEĆ KTO, KIEDY I JAK CIĘ ATAKUJE)

  149. CO WIĘCEJ?

  150. OWASP - GRAPHQL CHEAT SHEET

  151. MACIEJ KOFEL - HACKOWANIE GRAPHQL

  152. KOD CLICK DA WAM 20% ZNIŻKI

  153. KOD CLICK DA WAM 20% ZNIŻKI

  154. KOD ŹRÓDŁOWY, WSZYSTKIE NARZĘDZIA, SLAJDY, ODNOŚNIKI I PROMOCJE GraphQL.pl/click

  155. CZY MACIE JAKIEŚ PYTANIA? Q&A GraphQL.pl/click