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

GraphQLを安全に使うためにやっていること

林憲吾
September 20, 2024

 GraphQLを安全に使うためにやっていること

「テックリードの悩みを解決するGraphQLの話」にて弊社エンジニア重本が登壇した資料です。
https://estie.connpass.com/event/328999/

林憲吾

September 20, 2024
Tweet

More Decks by 林憲吾

Other Decks in Technology

Transcript

  1. 重本 太宏 / Takahiro Shigemoto 自己紹介 Web Engineer at PICK

    BE : FE = 7 : 3 設計が好き お気に入りはオニオンアーキ × DDD × テスト駆動
  2. GraphQLの利点 01. GraphQLの利点 • いちいちエンドポイントを考える必要がない。増えない。 • 型でFEとBEが語り合える • FEでレスポンスを型安全に扱うことができる •

    一つのクエリで様々なデータフェッチに対応することができる • オーバーフェッチを考慮しなくていいので、 API実装側はYAGNIをあまり気 にせず実装可能
  3. GraphQLの柔軟性の理由 01. GraphQLの利点 A. GraphQLは「型というノードがグラフで繋がれた世界にアクセスするためのク エリ言語」 だから • SQLに近い •

    リレーションさえしていれば(エッジで繋がってさえいれば)縦横無尽にフィール ドを取得することができる
  4. まとめ 04. まとめ • GraphQLはフィールドを縦横無尽に取得できて超便利 • 型がグラフでつながり合った世界にアクセスする仕組みだから • その利便性ゆえに起こる問題 •

    どこからでも引っ張ってこれることによる、意図しないフィールド露出 • あえて有向グラフにする • resolver関数だけでなくフィールドにも認可を機能をつける • 複雑なクエリや深いクエリを呼ばれることによる DoS攻撃リスク • 同時に叩ける Query数を制限する • 深さを制限する この2つはかなり手軽に導入できるのでおすすめ