로컬 데이터베이스

이 문서는 다음 Update API 메서드에 적용됩니다.

데이터베이스 설정

Update API를 사용하는 클라이언트는 로컬 데이터베이스를 설정하고 작업할 Web Risk 목록을 초기 다운로드해야 합니다. 초기 가져오기를 수행하는 방법에 대한 자세한 내용은 아래의 전체 업데이트 섹션을 참조하세요.

데이터베이스 업데이트

최신 위협으로부터 보호하기 위해 고객은 threatLists.computeDiff 메서드를 사용하여 로컬 Web Risk 목록을 정기적으로 업데이트하는 것이 좋습니다.

threatLists.computeDiff 요청은 업데이트할 목록을 지정합니다. 클라이언트에 메모리 또는 대역폭 제한이 있는 경우 요청을 사용하여 제약조건 업데이트를 설정할 수도 있습니다(제약조건 업데이트 참조).

threatLists.computeDiff response는 아래에 설명된 대로 각 목록의 전체 업데이트 또는 부분 업데이트를 반환합니다.

전체 업데이트

클라이언트가 threatLists.computeDiff 요청versionToken 필드를 비워두거나 서버가 전체 업데이트가 필요하다고 판단하면 전체 업데이트가 반환됩니다. 전체 업데이트의 경우 추가만 반환됩니다. 클라이언트는 업데이트를 적용하고 유효성 검사를 수행하기 전에 로컬 데이터베이스를 삭제해야 합니다.

빈 상태

클라이언트가 목록의 초기 요청을 보내면 전체 업데이트가 반환됩니다. 이 경우 요청의 versionToken 필드는 비어 있고(제공할 값이 없으므로) 응답의 newVersionToken 필드가 로컬 목록의 초기 상태를 반환합니다. 클라이언트가 후속 요청에서 versionToken 필드를 고의로 비워 두면 전체 업데이트도 반환됩니다. 이렇게 하면 전체 업데이트가 강제로 수행되고 응답의 newVersionToken 필드에 새로운 상태가 반환됩니다.

서버 결정

경우에 따라 클라이언트가 부분 업데이트만 요청하면 Web Risk 서버가 전체 업데이트를 반환합니다. 클라이언트가 목록의 작은 버전을 처음 다운로드한 다음 더 큰 버전으로 업데이트할 때 이러한 현상이 발생할 수 있습니다. 서버는 전체 목록이 포함된 전체 업데이트를 반환합니다. 클라이언트가 오랫동안 데이터를 다운로드하지 않고 부분 업데이트를 요청하는 경우에도 이 문제가 발생할 수 있습니다. 서버는 전체 목록이 포함된 전체 업데이트를 반환합니다.

부분 업데이트

클라이언트가 threatLists.computeDiff 요청versionToken 필드 값을 제공하면 부분 업데이트가 반환됩니다. 위에서 언급한 대로 예외는 서버가 전체 업데이트가 필요하다고 결정한 경우입니다. 부분 업데이트의 경우 추가삭제가 모두 반환됩니다. 클라이언트가 로컬 데이터베이스의 목록을 업데이트한 후(추가 적용 전에 삭제 적용) 유효성 검사를 수행합니다.

추가

추가는 로컬 데이터베이스에 추가해야 하는 SHA256 해시 프리픽스입니다. 대부분의 해시 프리픽스는 4바이트이지만 일부 해시 프리픽스의 길이는 4~32바이트입니다. 따라서 여러 개의 추가 항목이 반환될 수 있습니다. 예를 들어 4바이트 프리픽스나 5바이트 프리픽스가 포함될 수 있습니다.

클라이언트가 압축을 지원할 경우 Rice 압축을 사용하여 응답을 압축할 수 있습니다. 하지만 4바이트 해시 프리픽스만 압축됩니다. 긴 해시 프리픽스는 항상 압축되지 않은 원시 형식으로 전송됩니다. 자세한 내용은 압축을 참조하세요.

삭제

삭제는 로컬 데이터베이스에서 삭제되어야 하는 항목을 가리키는 사전 순으로 정렬된 클라이언트 데이터베이스의 0부터 시작하는 색인입니다. 하나의 삭제 집합만 반환됩니다.

클라이언트가 압축을 지원하면 'Rice 해시' 및 'Rice 색인'이 반환됩니다. 압축이 지원되지 않으면 '원시 해시'와 '원시 색인'이 반환됩니다. 자세한 내용은 압축(/web-risk/docs/compression)을 참조하세요.

유효성 검사 확인

threatLists.computeDiff 응답이 반환될 때 전체 업데이트 또는 부분 업데이트로 클라이언트는 유효성 검사를 수행하게 됩니다.

클라이언트는 먼저 로컬 데이터베이스의 목록을 업데이트합니다(추가 전에 삭제 적용). 그런 다음 클라이언트는 사전 순으로 정렬된 로컬 목록의 SHA256 해시를 계산하여 응답에 반환된 체크섬과 비교합니다. 두 값이 같으면 Web Risk 목록이 '올바른' 것으로 간주됩니다.

두 값이 같지 않으면 Web Risk 목록이 '손상된' 것으로 간주됩니다. 클라이언트는 데이터베이스에서 목록을 지우고 versionToken 필드를 빈 문자열로 설정하여 두 번째 업데이트를 다시 실행해야 합니다. 이렇게 하면 강제로 전체 업데이트가 수행되고 새로운 목록과 상태가 반환됩니다.