タイムアウト

もう一つの攻撃ベクトルは、実行時間が非常に長いクエリを作成することです。タイムアウトには、大きく分けて以下の2種類あります。

  • データベースタイムアウト * :データベースの接続やクエリの応答に時間がかかると、Hasuraはタイムアウトエラーを返すことがあります。Postgresには、statement_timeout設定があり、指定したミリ秒を超えるステートメントの実行を中断します。これはあくまでデータベース層(この場合はPostgres)での設定です。

  • HTTPタイムアウト * :アクション/リモートスキーマ/イベントを使用している場合、各要求に対してhttpエンドポイントを設定していることでしょう。ここでタイムアウトを設定して、クエリの実行を中断することも可能です。HTTPエンドポイントは、基盤となるロジックで様々なクエリを実行しています。このため、接続を中断してクライアントに迅速に応答するためにタイムアウトを設定することを推奨します。

Did you find this page helpful?
Start with GraphQL on Hasura for Free
  • ArrowBuild apps and APIs 10x faster
  • ArrowBuilt-in authorization and caching
  • Arrow8x more performant than hand-rolled APIs
Promo
footer illustration
Brand logo
© 2024 Hasura Inc. All rights reserved
Github
Titter
Discord
Facebook
Instagram
Youtube
Linkedin
graphql-handbook