ローカル データベース
このドキュメントは、Update API メソッドに適用されます。
データベースの設定
Update API を使用するクライアントは、ローカル データベースを設定し、使用する Web Risk リストを最初にダウンロードする必要があります。最初の取得方法の詳細については、以下のフルアップデートのセクションをご覧ください。
データベースの更新
最新の脅威から保護するため、threatLists.computeDiff
メソッドを使用してローカルの Web Risk リストを定期的に更新することを強くおすすめします。
threatLists.computeDiff
リクエストで、更新するリストが指定されます。また、クライアントにメモリや帯域幅の制限がある場合は、リクエストを使用して更新制約を設定できます(更新の制約を参照)。
以下で説明するように、threatLists.computeDiff response
は各リストの完全な更新または部分的な更新を返します。
フル アップデート
フル アップデートは、クライアントが TheatLists.computeDiff リクエストの versionToken
フィールドを空のままにするか、サーバーが完全なアップデートが必要であると判断したときに返されます。フル アップデートの場合は、additions のみが返されます。クライアントは、更新を適用して検証チェックを実行する前に、ローカル データベースをクリアする必要があります。
空の状態
クライアントがリストの最初のリクエストを送信すると、フル アップデートが返されます。この場合、リクエストの versionToken
フィールドは空のままになり(指定する値がないため)、レスポンスの newVersionToken
フィールドはローカルリストの初期状態を返します。後続のリクエストでクライアントが versionToken
フィールドを意図的に空にした場合も、フル アップデートが返されます。これにより、完全な更新が行われ、レスポンスの newVersionToken
フィールドに新しい状態が返されます。
サーバーの決定
たまに、クライアントが部分的な更新のみをリクエストしても、Web Risk サーバーからフル アップデートが返されることがあります。これは、クライアントが最初に小さいバージョンのリストをダウンロードしてから、大きいバージョンのリストに更新するときに発生します。サーバーはリスト全体を含むフル アップデートを返します。これは、クライアントが長時間データをダウンロードしておらず、部分的な更新をリクエストした場合にも発生します。この場合も、サーバーはリスト全体を含むフル アップデートを返します。
部分更新
クライアントが threatLists.computeDiff
リクエストの versionToken
フィールドに値を指定すると、部分的な更新が返されます(上記のとおり、サーバーが完全な更新が必要と判断した場合を除く)。部分的な更新の場合、追加 と 削除 の両方が返されます。クライアントはローカル データベース内のリストを更新し(追加の前に削除を適用)、検証チェックを実行します。
追加
追加は、ローカルデータベースに追加される SHA256 ハッシュ プレフィックスです。ほとんどのハッシュ プレフィックスの長さは 4 バイトですが、4〜32 バイトの長さのハッシュ プレフィックスもあります。したがって、複数の追加を返すことができます。たとえば、4 バイトのプレフィックスを含むものと 5 バイトのプレフィックスを含むものです。
クライアントが圧縮をサポートしている場合は、Rice 圧縮を使用してレスポンスを圧縮できます。ただし、圧縮されるのは 4 バイトのハッシュ プレフィックスのみです。長いハッシュ プレフィックスは、常に非圧縮の未加工の形式で送信されます。詳細については、圧縮をご覧ください。
削除
削除は、ローカル データベースから削除する必要があるエントリを指す、辞書順で並べ替えられたクライアント データベース内のゼロベースのインデックスです。返される削除セットは 1 つだけです。
クライアントが圧縮をサポートしている場合は、「Rice ハッシュ」と「Rice インデックス」が返されます。圧縮がサポートされていない場合、「raw ハッシュ」と「raw インデックス」が返されます。詳しくは、圧縮(/web-risk/docs/compression)をご覧ください)。
検証結果
threatLists.computeDiff
レスポンスが返されたとき完全な更新または部分的な更新を返されたクライアントは検証チェックを実行する必要があります。
クライアントは、最初にローカル データベースのリストを更新します(追加を行う前に削除を適用します)。次に、クライアントは(辞書式順序に並べ替えられた)ローカルリストの SHA256 ハッシュを計算し、それをレスポンスで返されたチェックサムと比較します。2 つの値が等しい場合、Web Risk リストは「正しい」とみなされます。
2 つの値が等しくない場合、Web Risk リストは「破損」とみなされます。クライアントはデータベースからリストを消去し、versionToken
フィールドを空の文字列に設定して 2 回目の更新を実行する必要があります。これにより強制的にフルアップデートが実施され、新しいリストと状態が返されます。