GraphQL Persisted Queries
GraphQL APIで、受け付けるdocumentをallowlistで管理する方法 生のdocument + variablesでクエリするのではなく、事前に生のdocumentとそのハッシュ値をサーバー側に教えておくことで、ハッシュ値 + variablesでクエリする
サーバー側にハッシュ値に対応するdocumentが無かったらその場で登録してリクエストできるようにするautomatic peristed queriesというのもある
目的
Attack surfaceを減らす
特にサードパーティーのAPIクライアントを想定しない場合に有効
Documentのサイズが大きくなってリクエストサイズが肥大するのを防ぐ
ハッシュ値 + variablesのクエリはGETリクエストにすることでHTTPキャッシュに乗せやすくする Mutationまでキャッシュされると困るので良い感じにする必要はあるけど
Persisted DocumentsやTrusted Documentsとも呼ばれる
特に、クライアント側からハッシュ値を登録できるautomatic persisted queriesと、事前に登録したものしか認めない方式との差異を意識しつつ、セキュリティ面に注目するときtrusted documentsと呼ぶ リンク集