클라이언트가 저장소 없는 실시간 모드에서 Google 세이프 브라우징 v5를 사용하기로 선택하면 클라이언트는 영구 로컬 데이터베이스를 유지관리할 필요가 없습니다. 하지만 클라이언트는 여전히 로컬 캐시를 유지해야 합니다. 이러한 로컬 캐시는 영구 저장소에 있을 필요가 없으며 메모리 압력의 경우 삭제될 수 있습니다.
클라이언트가 특정 URL을 확인하려고 할 때마다 클라이언트는 항상 서버에 연결하여 확인을 수행합니다. 이 모드는 v4 Lookup API 클라이언트가 구현할 수 있는 것과 유사합니다.
실시간 모드와 비교할 때 이 모드는 더 많은 네트워크 대역폭을 사용할 수 있지만 클라이언트가 지속적인 로컬 상태를 유지하는 것이 불편한 경우에 더 적합할 수 있습니다.
로컬 데이터베이스가 없는 실시간 URL 확인 절차
이 절차는 단일 URL u를 사용하고 SAFE 또는 UNSAFE를 반환합니다.
expressions을 URLu에 의해 생성된 서픽스/프리픽스 표현식 목록이라고 가정합니다.expressionHashes를 목록이라고 가정합니다. 여기서 요소는expressions에 있는 각 표현식의 SHA256 해시입니다.expressionHashPrefixes를 목록이라고 가정합니다. 여기서 요소는expressionHashes에 있는 각 해시의 처음 4바이트입니다.expressionHashPrefixes의 각expressionHashPrefix에 대해 다음을 실행합니다.- 로컬 캐시에서
expressionHashPrefix을 조회합니다. - 캐시된 항목이 발견되면 다음을 실행합니다.
- 현재 시간이 만료 시간보다 큰지 확인합니다.
- 더 큰 경우 다음을 실행합니다.
- 찾은 캐시 항목을 로컬 캐시에서 삭제합니다.
- 루프를 계속합니다.
- 더 크지 않은 경우 다음을 실행합니다.
expressionHashPrefixes에서 이 특정expressionHashPrefix를 삭제합니다.expressionHashes내의 해당 전체 해시가 캐시된 항목에 있는지 확인합니다.- 찾은 경우
UNSAFE을 반환합니다. - 찾을 수 없는 경우 루프를 계속합니다.
- 캐시된 항목을 찾을 수 없는 경우 루프를 계속합니다.
- 로컬 캐시에서
- RPC SearchHashes 또는 REST 메서드 hashes.search를 사용하여
expressionHashPrefixes를 Google 세이프 브라우징 v5 서버로 전송합니다. 오류가 발생한 경우 (네트워크 오류, HTTP 오류 등)SAFE를 반환합니다. 그렇지 않으면 응답이 SB 서버에서 수신한response(위협의 성격(소셜 엔지니어링, 멀웨어 등)을 식별하는 일부 보조 정보와 캐시 만료 시간expiration이 포함된 전체 해시 목록)이 되도록 합니다. response의 각fullHash에 대해 다음을 실행합니다.expiration와 함께fullHash를 로컬 캐시에 삽입합니다.
response의 각fullHash에 대해 다음을 실행합니다.isFound을expressionHashes에서fullHash을 찾은 결과라고 하겠습니다.isFound이 False이면 루프를 계속합니다.isFound이 True이면UNSAFE를 반환합니다.
SAFE를 반환합니다.
실시간 모드와 마찬가지로 이 절차에서는 해시 접두사를 서버에 전송하는 방법을 정확하게 지정하지 않습니다. 예를 들어 클라이언트가 단일 요청으로 모든 expressionHashPrefixes를 전송해도 되고, 클라이언트가 expressionHashPrefixes의 각 개별 접두사를 별도의 요청으로 서버에 전송해도 됩니다 (아마도 병렬로 진행). 단일 요청에서 전송되는 해시 프리픽스 수가 30개를 초과하지 않는 한 클라이언트가 expressionHashPrefixes의 해시 프리픽스와 함께 관련이 없거나 무작위로 생성된 해시 프리픽스를 전송해도 됩니다.