जब क्लाइंट, नो-स्टोरेज रीयल-टाइम मोड में Google Safe Browsing v5 का इस्तेमाल करते हैं, तो क्लाइंट को किसी भी परसिस्टेंट लोकल डेटाबेस को बनाए रखने की ज़रूरत नहीं होती. हालांकि, क्लाइंट को अब भी लोकल कैश मेमोरी बनाए रखनी होगी. इस तरह की लोकल कैश मेमोरी को परसिस्टेंट स्टोरेज में सेव करने की ज़रूरत नहीं होती. साथ ही, मेमोरी पर दबाव पड़ने पर इसे मिटाया जा सकता है.
जब भी क्लाइंट को किसी यूआरएल की जांच करनी होती है, तो वह हमेशा जांच करने के लिए सर्वर से कनेक्ट होता है. यह मोड, v4 Lookup API के क्लाइंट के लिए उपलब्ध मोड जैसा ही है.
रीयल-टाइम मोड की तुलना में, यह मोड ज़्यादा नेटवर्क बैंडविथ का इस्तेमाल कर सकता है. हालांकि, अगर क्लाइंट के लिए लगातार लोकल स्टेट को बनाए रखना मुश्किल है, तो यह मोड ज़्यादा सही हो सकता है.
लोकल डेटाबेस के बिना रीयल-टाइम में यूआरएल की जांच करने की प्रक्रिया
यह तरीका, एक यूआरएल u लेता है और SAFE या UNSAFE दिखाता है.
- मान लें कि
expressions, यूआरएलuसे जनरेट किए गए प्रत्यय/उपसर्ग एक्सप्रेशन की सूची है. - मान लें कि
expressionHashesएक सूची है, जिसमेंexpressionsके हर एक्सप्रेशन के SHA256 हैश शामिल हैं. - मान लें कि
expressionHashPrefixesएक सूची है, जिसमें एलिमेंट,expressionHashesमें मौजूद हर हैश के पहले चार बाइट हैं. expressionHashPrefixesके हरexpressionHashPrefixके लिए:- स्थानीय कैश में
expressionHashPrefixको ढूंढें. - अगर कैश मेमोरी में सेव की गई एंट्री मिल जाती है, तो:
- यह तय करता है कि मौजूदा समय, कुकी के खत्म होने के समय से ज़्यादा है या नहीं.
- अगर यह ज़्यादा है, तो:
- लोकल कैश से, कैश की गई एंट्री को हटाता है.
- लूप जारी रखें.
- अगर यह इससे ज़्यादा नहीं है, तो:
expressionHashPrefixesसे इसexpressionHashPrefixको हटाएं.- देखें कि
expressionHashesमें मौजूद पूरा हैश, कैश मेमोरी में सेव की गई एंट्री में मौजूद है या नहीं. - अगर ऐसा होता है, तो
UNSAFEदिखाएं. - अगर नहीं मिलता है, तो लूप जारी रखें.
- अगर कैश मेमोरी में सेव की गई एंट्री नहीं मिलती है, तो लूप जारी रखें.
- स्थानीय कैश में
- RPC SearchHashes या REST तरीके hashes.search का इस्तेमाल करके,
expressionHashPrefixesको Google Safe Browsing v5 सर्वर पर भेजें. अगर कोई गड़बड़ी हुई है (जैसे, नेटवर्क की गड़बड़ियां, एचटीटीपी गड़बड़ियां वगैरह), तोSAFEदिखाएं. अगर ऐसा नहीं है, तो एसबी सर्वर से मिलेresponseको रिस्पॉन्स के तौर पर सेट करें. यह पूरी हैश की सूची होती है. इसमें कुछ अन्य जानकारी भी होती है, जिससे खतरे के बारे में पता चलता है. जैसे, सोशल इंजीनियरिंग, मैलवेयर वगैरह. साथ ही, इसमें कैश मेमोरी के खत्म होने का समयexpirationभी होता है. responseके हरfullHashके लिए:fullHashकोexpirationके साथ लोकल कैश मेमोरी में डालें.
responseके हरfullHashके लिए:- मान लें कि
expressionHashesमेंfullHashको खोजने परisFoundमिलता है. - अगर
isFoundकी वैल्यू False है, तो लूप जारी रखें. - अगर
isFoundसही है, तोUNSAFEदिखाएं.
- मान लें कि
- वापसी की तारीख:
SAFE.
रीयल-टाइम मोड की तरह ही, इस तरीके में यह नहीं बताया गया है कि सर्वर को हैश प्रीफ़िक्स कैसे भेजे जाएं. उदाहरण के लिए, क्लाइंट के लिए यह स्वीकार्य है कि वह एक ही अनुरोध में सभी expressionHashPrefixes भेजे. साथ ही, क्लाइंट के लिए यह भी स्वीकार्य है कि वह expressionHashPrefixes में मौजूद हर प्रीफ़िक्स को सर्वर पर अलग-अलग अनुरोधों में भेजे. ऐसा हो सकता है कि वह एक साथ कई अनुरोध भेजे. क्लाइंट, expressionHashPrefixes में दिए गए हैश प्रीफ़िक्स के साथ-साथ, मिलते-जुलते या रैंडम तरीके से जनरेट किए गए हैश प्रीफ़िक्स भी भेज सकता है. हालांकि, यह ज़रूरी है कि एक अनुरोध में भेजे गए हैश प्रीफ़िक्स की संख्या 30 से ज़्यादा न हो.