タイムアウト
もう一つの攻撃ベクトルは、実行時間が非常に長いクエリを作成することです。タイムアウトには、大きく分けて以下の2種類あります。
データベースタイムアウト * :データベースの接続やクエリの応答に時間がかかると、Hasuraはタイムアウトエラーを返すことがあります。Postgresには、statement_timeout設定があり、指定したミリ秒を超えるステートメントの実行を中断します。これはあくまでデータベース層(この場合はPostgres)での設定です。
HTTPタイムアウト * :アクション/リモートスキーマ/イベントを使用している場合、各要求に対してhttpエンドポイントを設定していることでしょう。ここでタイムアウトを設定して、クエリの実行を中断することも可能です。HTTPエンドポイントは、基盤となるロジックで様々なクエリを実行しています。このため、接続を中断してクライアントに迅速に応答するためにタイムアウトを設定することを推奨します。
Did you find this page helpful?
Start with GraphQL on Hasura for Free
- Build apps and APIs 10x faster
- Built-in authorization and caching
- 8x more performant than hand-rolled APIs