ভূমিকা
দ্রষ্টব্য: এই ডকুমেন্টেশনটি এখনও বিকাশাধীন। অদূর ভবিষ্যতে উন্নতি আশা করুন.
Google Safe Browsing v5 হল Google Safe Browsing v4 এর একটি বিবর্তন। v5-এ করা দুটি মূল পরিবর্তন হল ডেটা সতেজতা এবং IP গোপনীয়তা। উপরন্তু, নমনীয়তা, দক্ষতা বাড়াতে এবং ফোলা কমাতে API পৃষ্ঠকে উন্নত করা হয়েছে। উপরন্তু, Google নিরাপদ ব্রাউজিং v5 ডিজাইন করা হয়েছে v4 থেকে মাইগ্রেশন সহজ করার জন্য।
বর্তমানে, Google v4 এবং v5 উভয়ই অফার করে এবং উভয়কেই উৎপাদন প্রস্তুত বলে মনে করা হয়। আপনি v4 বা v5 ব্যবহার করতে পারেন। আমরা v4 সূর্যাস্তের তারিখ ঘোষণা করিনি; যদি আমরা তা করি, আমরা ন্যূনতম এক বছরের নোটিশ দেব। এই পৃষ্ঠাটি v5 বর্ণনা করবে সেই সাথে v4 থেকে v5 পর্যন্ত একটি মাইগ্রেশন গাইড; সম্পূর্ণ v4 ডকুমেন্টেশন উপলব্ধ থাকে।
ডেটা সতেজতা
v4 (বিশেষত, v4 আপডেট API ) এর উপর Google নিরাপদ ব্রাউজিং v5 এর একটি উল্লেখযোগ্য উন্নতি হল ডেটা সতেজতা এবং কভারেজ। যেহেতু সুরক্ষা ক্লায়েন্ট-রক্ষণাবেক্ষণ করা স্থানীয় ডাটাবেসের উপর নির্ভর করে, তাই স্থানীয় ডাটাবেস আপডেটের বিলম্ব এবং আকার মিস সুরক্ষার প্রধান অবদানকারী। v4-এ, সাধারণ ক্লায়েন্ট হুমকি তালিকার সবচেয়ে আপ-টু-ডেট সংস্করণ পেতে 20 থেকে 50 মিনিট সময় নেয়। দুর্ভাগ্যবশত, ফিশিং আক্রমণগুলি দ্রুত ছড়িয়ে পড়ে: 2021 সালের হিসাবে, 60% সাইটগুলি যে আক্রমণগুলি সরবরাহ করে 10 মিনিটেরও কম সময় বাঁচে৷ আমাদের বিশ্লেষণ দেখায় যে অনুপস্থিত ফিশিং সুরক্ষার প্রায় 25-30% এই ধরনের ডেটা অচলতার কারণে। আরও, কিছু ডিভাইস Google সেফ ব্রাউজিং হুমকি তালিকাগুলির সম্পূর্ণতা পরিচালনা করার জন্য সজ্জিত নয়, যা সময়ের সাথে সাথে বড় হতে থাকে।
v5-এ, আমরা রিয়েল-টাইম সুরক্ষা হিসাবে পরিচিত অপারেশনের একটি মোড প্রবর্তন করি। এটি উপরের ডেটা স্ট্যালেনেস সমস্যাটিকে বাধা দেয়। v4-এ, ক্লায়েন্টদের একটি স্থানীয় ডাটাবেস ডাউনলোড এবং বজায় রাখার আশা করা হয়, স্থানীয়ভাবে ডাউনলোড করা হুমকি তালিকার বিরুদ্ধে চেক সঞ্চালন করা হয়, এবং তারপর যখন একটি আংশিক উপসর্গ মিল থাকে, তখন সম্পূর্ণ হ্যাশ ডাউনলোড করার জন্য একটি অনুরোধ সম্পাদন করে। v5-এ, যদিও ক্লায়েন্টদের হুমকি তালিকার একটি স্থানীয় ডাটাবেস ডাউনলোড এবং বজায় রাখা চালিয়ে যাওয়া উচিত, ক্লায়েন্টদের এখন সম্ভাব্য-সৌম্য সাইটগুলির একটি তালিকা ডাউনলোড করার আশা করা হচ্ছে (যাকে বলা হয় গ্লোবাল ক্যাশে), পাশাপাশি এই গ্লোবাল ক্যাশের জন্য স্থানীয় চেক উভয়ই সম্পাদন করবে। একটি স্থানীয় হুমকি তালিকা চেক হিসাবে, এবং অবশেষে যখন হুমকি তালিকার জন্য একটি আংশিক উপসর্গ মিল থাকে বা গ্লোবাল ক্যাশে নো-ম্যাচ থাকে, তখন সম্পূর্ণ হ্যাশগুলি ডাউনলোড করার জন্য একটি অনুরোধ করুন৷ (ক্লায়েন্টের প্রয়োজনীয় স্থানীয় প্রক্রিয়াকরণের বিশদ বিবরণের জন্য, অনুগ্রহ করে নীচের প্রদত্ত পদ্ধতিটি দেখুন।) এটি অনুমতি-দ্বারা-ডিফল্ট থেকে চেক-বাই-ডিফল্টে একটি পরিবর্তনের প্রতিনিধিত্ব করে, যা হুমকির দ্রুত প্রচারের আলোকে সুরক্ষা উন্নত করতে পারে। ওয়েব অন্য কথায়, এটি এমন একটি প্রোটোকল যা কাছাকাছি-রিয়েল-টাইম সুরক্ষা প্রদানের জন্য ডিজাইন করা হয়েছে: আমরা নতুন Google নিরাপদ ব্রাউজিং ডেটা থেকে ক্লায়েন্টদের উপকৃত করার লক্ষ্য রাখি।
আইপি গোপনীয়তা
Google নিরাপদ ব্রাউজিং (v4 বা v5) অনুরোধ পরিবেশনের সময় ব্যবহারকারীর পরিচয়ের সাথে সম্পর্কিত কিছু প্রক্রিয়া করে না। কুকিজ, যদি পাঠানো হয়, উপেক্ষা করা হয়. অনুরোধগুলির মূল আইপি ঠিকানাগুলি Google-এর কাছে পরিচিত, তবে Google শুধুমাত্র প্রয়োজনীয় নেটওয়ার্কিং প্রয়োজনের জন্য (যেমন প্রতিক্রিয়া পাঠানোর জন্য) এবং অ্যান্টি-ডিওএস উদ্দেশ্যে আইপি ঠিকানাগুলি ব্যবহার করে৷
একই সাথে v5 এর সাথে, আমরা একটি সহচর API প্রবর্তন করি যা সেফ ব্রাউজিং অবলিভিয়স HTTP গেটওয়ে API নামে পরিচিত। এটি Google থেকে শেষ ব্যবহারকারীদের আইপি ঠিকানা লুকানোর জন্য অবলিভিস HTTP ব্যবহার করে। এটি ব্যবহারকারীর অনুরোধের একটি এনক্রিপ্ট করা সংস্করণ পরিচালনা করার জন্য একটি নন-ক্লুডিং থার্ড-পার্টি থাকার মাধ্যমে কাজ করে এবং তারপর সেটি Google-এ ফরওয়ার্ড করে। সুতরাং তৃতীয় পক্ষের শুধুমাত্র আইপি ঠিকানাগুলিতে অ্যাক্সেস রয়েছে এবং Google শুধুমাত্র অনুরোধের বিষয়বস্তুতে অ্যাক্সেস করতে পারে। তৃতীয় পক্ষ একটি অবলিভিস এইচটিটিপি রিলে পরিচালনা করে (যেমন ফাস্টলি দ্বারা এই পরিষেবাটি ), এবং Google অবলিভিস এইচটিটিপি গেটওয়ে পরিচালনা করে। এটি একটি ঐচ্ছিক সহচর API। Google নিরাপদ ব্রাউজিংয়ের সাথে এটি ব্যবহার করার সময়, শেষ ব্যবহারকারীদের আইপি ঠিকানা আর Google-এ পাঠানো হয় না।
উপযুক্ত ব্যবহার
অনুমোদিত ব্যবহার
নিরাপদ ব্রাউজিং API শুধুমাত্র অ-বাণিজ্যিক ব্যবহারের জন্য (অর্থাৎ "বিক্রয় বা উপার্জনের উদ্দেশ্যে নয়")। আপনার যদি বাণিজ্যিক উদ্দেশ্যে সমাধানের প্রয়োজন হয়, অনুগ্রহ করে ওয়েব রিস্ক দেখুন।
মূল্য নির্ধারণ
সমস্ত Google নিরাপদ ব্রাউজিং এপিআই বিনামূল্যে।
কোটা
সেফ ব্রাউজিং এপিআই সক্ষম করার পরে বিকাশকারীদের একটি ডিফল্ট ব্যবহারের কোটা বরাদ্দ করা হয়। বর্তমান বরাদ্দ এবং ব্যবহার Google ডেভেলপার কনসোলে দেখা যেতে পারে। আপনি যদি আপনার বর্তমানে বরাদ্দকৃত কোটার চেয়ে বেশি ব্যবহার করার আশা করেন, তাহলে আপনি বিকাশকারী কনসোলের কোটা ইন্টারফেস থেকে অতিরিক্ত কোটার অনুরোধ করতে পারেন। আমরা এই অনুরোধগুলি পর্যালোচনা করি এবং বর্ধিত কোটার জন্য আবেদন করার সময় আমাদের পরিষেবার প্রাপ্যতা সমস্ত ব্যবহারকারীর চাহিদা পূরণ করে তা নিশ্চিত করার জন্য একটি যোগাযোগের প্রয়োজন৷
উপযুক্ত ইউআরএল
Google নিরাপদ ব্রাউজিং একটি ব্রাউজারের ঠিকানা বারে প্রদর্শিত URL-এ কাজ করার জন্য ডিজাইন করা হয়েছে৷ এটি সাবরিসোর্স (যেমন একটি জাভাস্ক্রিপ্ট বা একটি HTML ফাইল দ্বারা উল্লেখ করা ছবি, বা JavaScript দ্বারা শুরু করা একটি WebSocket URL) এর বিরুদ্ধে পরীক্ষা করার জন্য ডিজাইন করা হয়নি৷ এই ধরনের সাবরিসোর্স ইউআরএলগুলিকে গুগল সেফ ব্রাউজিং এর বিরুদ্ধে চেক করা উচিত নয় ।
যদি একটি URL পরিদর্শনের ফলে একটি পুনঃনির্দেশ হয় (যেমন HTTP 301), তাহলে Google নিরাপদ ব্রাউজিং-এর বিরুদ্ধে পুনঃনির্দেশিত URL চেক করা উপযুক্ত৷ ক্লায়েন্ট-সাইড ইউআরএল ম্যানিপুলেশন যেমন History.pushState
এর ফলে Google সেফ ব্রাউজিংয়ের বিরুদ্ধে নতুন ইউআরএল চেক করা হয় না ।
ব্যবহারকারী সতর্কতা
আপনি যদি নির্দিষ্ট ওয়েবপৃষ্ঠাগুলির ঝুঁকি সম্পর্কে ব্যবহারকারীদের সতর্ক করার জন্য Google নিরাপদ ব্রাউজিং ব্যবহার করেন তবে নিম্নলিখিত নির্দেশিকা প্রযোজ্য হবে৷
এই নির্দেশিকাগুলি আপনাকে এবং Google উভয়কে ভুল বোঝাবুঝি থেকে রক্ষা করতে সাহায্য করে এই স্পষ্ট করে যে পৃষ্ঠাটি একটি অনিরাপদ ওয়েব সংস্থান হওয়ার 100% নিশ্চিততার সাথে পরিচিত নয় এবং সতর্কতাগুলি কেবল সম্ভাব্য ঝুঁকি চিহ্নিত করে৷
- আপনার ব্যবহারকারীর দৃশ্যমান সতর্কতায়, আপনি অবশ্যই ব্যবহারকারীদের বিশ্বাস করতে বাধ্য করবেন না যে প্রশ্নে থাকা পৃষ্ঠাটি নিঃসন্দেহে একটি অনিরাপদ ওয়েব সম্পদ। আপনি যখন শনাক্ত করা পৃষ্ঠার উল্লেখ করেন বা এটি ব্যবহারকারীদের জন্য সম্ভাব্য ঝুঁকির কারণ হতে পারে, তখন আপনাকে অবশ্যই এই ধরনের পদগুলি ব্যবহার করে সতর্কতা যোগ্য করতে হবে: সন্দেহজনক, সম্ভাব্য, সম্ভাব্য, সম্ভাব্য, হতে পারে।
- আপনার সতর্কতা অবশ্যই ব্যবহারকারীকে Google-এর বিভিন্ন হুমকির সংজ্ঞা পর্যালোচনা করে আরও জানতে সক্ষম করবে৷ নিম্নলিখিত লিঙ্কগুলি সুপারিশ করা হয়:
- সামাজিক প্রকৌশল: https://developers.google.com/search/docs/monitor-debug/security/social-engineering
- ম্যালওয়্যার এবং অবাঞ্ছিত সফ্টওয়্যার: https://developers.google.com/search/docs/monitor-debug/security/malware
- সম্ভাব্য ক্ষতিকারক অ্যাপ্লিকেশন (শুধুমাত্র অ্যান্ড্রয়েড): https://developers.google.com/android/play-protect/potentially-harmful-applications
- আপনি যখন নিরাপদ ব্রাউজিং পরিষেবা দ্বারা ঝুঁকিপূর্ণ হিসাবে চিহ্নিত পৃষ্ঠাগুলির জন্য সতর্কতা দেখান, তখন আপনাকে অবশ্যই নিরাপদ ব্রাউজিং পরামর্শের লিঙ্কের সাথে "গুগলের দেওয়া পরামর্শ" লাইনটি অন্তর্ভুক্ত করে Google-কে অ্যাট্রিবিউশন দিতে হবে। যদি আপনার পণ্য অন্যান্য উত্সের উপর ভিত্তি করে সতর্কতাগুলিও দেখায়, তাহলে আপনাকে অবশ্যই নন-Google ডেটা থেকে প্রাপ্ত সতর্কতায় Google অ্যাট্রিবিউশন অন্তর্ভুক্ত করতে হবে না।
আপনার পণ্যের ডকুমেন্টেশনে, ব্যবহারকারীদের জানানোর জন্য আপনাকে অবশ্যই একটি নোটিশ প্রদান করতে হবে যে Google সেফ ব্রাউজিং দ্বারা প্রদত্ত সুরক্ষা নিখুঁত নয়। এটি তাদের অবশ্যই জানাতে হবে যে মিথ্যা ইতিবাচক (নিরাপদ সাইটগুলিকে ঝুঁকিপূর্ণ হিসাবে পতাকাঙ্কিত) এবং মিথ্যা নেতিবাচক (ঝুঁকিপূর্ণ সাইটগুলি পতাকাঙ্কিত নয়) উভয়েরই সম্ভাবনা রয়েছে৷ আমরা নিম্নলিখিত ভাষা ব্যবহার করার পরামর্শ দিই:
Google অনিরাপদ ওয়েব রিসোর্স সম্পর্কে সবচেয়ে সঠিক এবং আপ-টু-ডেট তথ্য প্রদান করতে কাজ করে। যাইহোক, Google গ্যারান্টি দিতে পারে না যে তার তথ্য ব্যাপক এবং ত্রুটি-মুক্ত: কিছু ঝুঁকিপূর্ণ সাইট সনাক্ত করা যাবে না, এবং কিছু নিরাপদ সাইট ত্রুটিতে সনাক্ত করা যেতে পারে।
অপারেশন মোড
Google নিরাপদ ব্রাউজিং v5 ক্লায়েন্টদের অপারেশনের তিনটি মোড থেকে বেছে নিতে দেয়।
রিয়েল-টাইম মোড
যখন ক্লায়েন্টরা রিয়েল-টাইম মোডে Google Safe Browsing v5 ব্যবহার করতে বেছে নেয়, তখন ক্লায়েন্টরা তাদের স্থানীয় ডাটাবেসে বজায় রাখবে: (i) সম্ভাব্য-সৌম্য সাইটগুলির একটি গ্লোবাল ক্যাশে, হোস্ট-সফিক্স/পাথ-প্রিফিক্স URL এক্সপ্রেশনগুলির SHA256 হ্যাশ হিসাবে ফর্ম্যাট করা হয়েছে, (ii) হুমকি তালিকার একটি সেট, হোস্ট-সফিক্স/পাথ-প্রিফিক্স URL এক্সপ্রেশনের SHA256 হ্যাশ উপসর্গ হিসাবে ফর্ম্যাট করা হয়েছে। উচ্চ-স্তরের ধারণা হল যে যখনই ক্লায়েন্ট একটি নির্দিষ্ট URL চেক করতে চায়, তখন গ্লোবাল ক্যাশে ব্যবহার করে একটি স্থানীয় চেক করা হয়। যদি সেই চেকটি পাস হয়, একটি স্থানীয় হুমকি তালিকা চেক করা হয়। অন্যথায়, ক্লায়েন্ট রিয়েল-টাইম হ্যাশ চেকটি নীচে বিশদভাবে চালিয়ে যান।
স্থানীয় ডাটাবেস ছাড়াও, ক্লায়েন্ট একটি স্থানীয় ক্যাশে বজায় রাখবে। এই ধরনের একটি স্থানীয় ক্যাশে ক্রমাগত স্টোরেজের প্রয়োজন নেই এবং মেমরির চাপের ক্ষেত্রে সাফ করা যেতে পারে।
পদ্ধতির একটি বিশদ বিবরণ নীচে উপলব্ধ।
স্থানীয় তালিকা মোড
যখন ক্লায়েন্টরা এই মোডে Google সেফ ব্রাউজিং v5 ব্যবহার করতে বেছে নেয়, তখন ক্লায়েন্টের আচরণ v4 আপডেট API-এর মতোই হয় v5-এর উন্নত API সারফেস ব্যবহার করা ছাড়া। ক্লায়েন্টরা তাদের স্থানীয় ডাটাবেসে হোস্ট-সফিক্স/পাথ-প্রিফিক্স URL এক্সপ্রেশনের SHA256 হ্যাশ উপসর্গ হিসাবে ফর্ম্যাট করা হুমকি তালিকার একটি সেট বজায় রাখবে। যখনই ক্লায়েন্ট একটি নির্দিষ্ট URL পরীক্ষা করতে চায়, স্থানীয় হুমকি তালিকা ব্যবহার করে একটি চেক করা হয়। যদি এবং শুধুমাত্র যদি একটি মিল থাকে, ক্লায়েন্ট চেক চালিয়ে যেতে সার্ভারের সাথে সংযোগ করে।
উপরের মতো, ক্লায়েন্ট একটি স্থানীয় ক্যাশেও বজায় রাখবে যা স্থায়ী সঞ্চয়স্থানে থাকার প্রয়োজন নেই।
নো-স্টোরেজ রিয়েল-টাইম মোড
ক্লায়েন্টরা যখন নো-স্টোরেজ রিয়েল-টাইম মোডে Google সেফ ব্রাউজিং v5 ব্যবহার করতে বেছে নেয়, তখন ক্লায়েন্টের কোনো স্থায়ী স্থানীয় ডাটাবেস বজায় রাখার প্রয়োজন হয় না। যাইহোক, ক্লায়েন্ট এখনও একটি স্থানীয় ক্যাশে বজায় রাখার প্রত্যাশিত৷ এই ধরনের একটি স্থানীয় ক্যাশে ক্রমাগত স্টোরেজের প্রয়োজন নেই এবং মেমরির চাপের ক্ষেত্রে সাফ করা যেতে পারে।
যখনই ক্লায়েন্ট একটি নির্দিষ্ট URL চেক করতে চায়, ক্লায়েন্ট সর্বদা সার্ভারের সাথে একটি চেক করার জন্য সংযোগ করে। এই মোডটি v4 Lookup API-এর ক্লায়েন্টরা যা প্রয়োগ করতে পারে তার অনুরূপ।
রিয়েল-টাইম মোডের তুলনায়, এই মোডটি আরও বেশি নেটওয়ার্ক ব্যান্ডউইথ ব্যবহার করতে পারে কিন্তু ক্লায়েন্টের পক্ষে স্থায়ী স্থানীয় অবস্থা বজায় রাখা অসুবিধাজনক হলে এটি আরও উপযুক্ত হতে পারে।
ইউআরএল চেক করা হচ্ছে
এই বিভাগে ক্লায়েন্ট কিভাবে URL চেক করে তার বিস্তারিত বিবরণ রয়েছে।
ইউআরএলের ক্যানোনিকালাইজেশন
কোনো ইউআরএল চেক করার আগে, ক্লায়েন্ট সেই ইউআরএলে কিছু ক্যানোনিকালাইজেশন করবে বলে আশা করা হয়।
শুরু করার জন্য, আমরা ধরে নিই যে ক্লায়েন্ট URLটিকে পার্স করেছে এবং RFC 2396 অনুযায়ী এটি বৈধ করেছে৷ যদি URLটি একটি আন্তর্জাতিক ডোমেন নাম (IDN) ব্যবহার করে, তাহলে ক্লায়েন্টকে URLটিকে ASCII Punycode উপস্থাপনায় রূপান্তর করতে হবে৷ URL একটি পাথ উপাদান অন্তর্ভুক্ত করা আবশ্যক; অর্থাৎ, ডোমেন অনুসরণ করে কমপক্ষে একটি স্ল্যাশ থাকতে হবে ( http://google.com/
এর পরিবর্তে http://google.com
)।
প্রথমে, URL থেকে ট্যাব (0x09), CR (0x0d), এবং LF (0x0a) অক্ষরগুলি সরান৷ এই অক্ষরগুলির জন্য এস্কেপ সিকোয়েন্সগুলি সরিয়ে ফেলবেন না (যেমন %0a
)।
দ্বিতীয়ত, যদি URL একটি খণ্ডে শেষ হয়, তাহলে খণ্ডটি সরান। উদাহরণস্বরূপ, http://google.com/#frag
কে http://google.com/
এ ছোট করুন।
তৃতীয়ত, বারবার ইউআরএল-কে পার্সেন্ট-আনস্কেপ করুন যতক্ষণ না এতে আর শতাংশ-এস্কেপ না হয়। (এটি URLটিকে অবৈধ রেন্ডার করতে পারে।)
হোস্টনামটিকে ক্যানোনিকালাইজ করতে:
URL থেকে হোস্টনাম বের করুন এবং তারপর:
- সমস্ত অগ্রণী এবং পিছনের বিন্দুগুলি সরান৷
- একটি একক বিন্দু দিয়ে পরপর বিন্দু প্রতিস্থাপন করুন।
- যদি হোস্টনামটি একটি IPv4 ঠিকানা হিসাবে পার্স করা যায়, তাহলে এটিকে 4 ডট-বিভাজিত দশমিক মানগুলিতে স্বাভাবিক করুন। ক্লায়েন্টকে অক্টাল, হেক্স এবং চারটিরও কম উপাদান সহ যেকোনো আইনি আইপি-ঠিকানা এনকোডিং পরিচালনা করা উচিত।
- যদি হোস্টনামটিকে একটি বন্ধনীযুক্ত IPv6 ঠিকানা হিসাবে পার্স করা যায়, তাহলে উপাদানগুলির মধ্যে অপ্রয়োজনীয় অগ্রণী শূন্যগুলি সরিয়ে এবং ডাবল-কোলন সিনট্যাক্স ব্যবহার করে শূন্য উপাদানগুলি ভেঙে দিয়ে এটিকে স্বাভাবিক করুন। উদাহরণস্বরূপ
[2001:0db8:0000::1]
কে[2001:db8::1]
এ রূপান্তরিত করা উচিত। যদি হোস্টনামটি নিম্নলিখিত দুটি বিশেষ IPv6 ঠিকানা প্রকারের মধ্যে একটি হয়, তাহলে তাদের IPv4 এ রূপান্তর করুন:- একটি IPv4-ম্যাপ করা IPv6 ঠিকানা, যেমন
[::ffff:1.2.3.4]
, যা1.2.3.4
এ রূপান্তরিত হওয়া উচিত; - একটি NAT64 ঠিকানা সুপরিচিত উপসর্গ ব্যবহার করে 64:ff9b::/96 , যেমন
[64:ff9b::1.2.3.4]
, যা1.2.3.4
এ রূপান্তরিত হওয়া উচিত।
- একটি IPv4-ম্যাপ করা IPv6 ঠিকানা, যেমন
- পুরো স্ট্রিং ছোট হাতের অক্ষর.
পথটিকে আদর্শীকরণ করতে:
-
/../
/
/./
এবং /../ পূর্ববর্তী পাথ উপাদানের সাথে প্রতিস্থাপন করে/../
এবং/./
পাথের ক্রমগুলি সমাধান করুন৷ - একটানা স্ল্যাশের রানগুলিকে একটি একক স্ল্যাশ অক্ষর দিয়ে প্রতিস্থাপন করুন।
ক্যোয়ারী প্যারামিটারে এই পাথ ক্যানোনিকালাইজেশন প্রয়োগ করবেন না।
URL-এ, <= ASCII 32, >= 127, #
, বা %
সমস্ত অক্ষর শতাংশ-এস্কেপ করুন। এস্কেপগুলিতে বড় হাতের হেক্স অক্ষর ব্যবহার করা উচিত।
হোস্ট-প্রত্যয় পাথ-প্রিফিক্স এক্সপ্রেশন
একবার ইউআরএল ক্যানোনিকালাইজ করা হলে, পরবর্তী ধাপ হল প্রত্যয়/প্রিফিক্স এক্সপ্রেশন তৈরি করা। প্রতিটি প্রত্যয়/প্রিফিক্স এক্সপ্রেশনে একটি হোস্ট প্রত্যয় (বা সম্পূর্ণ হোস্ট) এবং একটি পাথ উপসর্গ (বা সম্পূর্ণ পথ) থাকে।
ক্লায়েন্ট 30টি পর্যন্ত বিভিন্ন সম্ভাব্য হোস্ট প্রত্যয় এবং পথ উপসর্গ সমন্বয় গঠন করবে। এই সমন্বয় শুধুমাত্র URL এর হোস্ট এবং পাথ উপাদান ব্যবহার করে। স্কিম, ব্যবহারকারীর নাম, পাসওয়ার্ড এবং পোর্ট বাতিল করা হয়েছে। যদি URL-এ ক্যোয়ারী প্যারামিটার থাকে, তাহলে অন্তত একটি সংমিশ্রণে সম্পূর্ণ পাথ এবং ক্যোয়ারী প্যারামিটার অন্তর্ভুক্ত থাকবে।
হোস্টের জন্য , ক্লায়েন্ট সর্বোচ্চ পাঁচটি ভিন্ন স্ট্রিং চেষ্টা করবে। তারা হল:
- হোস্টনামটি যদি IPv4 বা IPv6 আক্ষরিক না হয়, তাহলে eTLD+1 ডোমেন দিয়ে শুরু করে এবং পরপর লিডিং কম্পোনেন্ট যোগ করে চারটি হোস্টনাম তৈরি হয়। eTLD+1-এর নির্ধারণ পাবলিক সাফিক্স তালিকার উপর ভিত্তি করে হওয়া উচিত। উদাহরণ স্বরূপ,
abexample.com
এর ফলেexample.com
এর eTLD+1 ডোমেইনের পাশাপাশি একটি অতিরিক্ত হোস্ট উপাদানb.example.com
এর সাথে হোস্ট হবে। - URL-এ সঠিক হোস্টনাম। আগের উদাহরণ অনুসরণ করে,
abexample.com
চেক করা হবে।
পথের জন্য , ক্লায়েন্ট সর্বোচ্চ ছয়টি ভিন্ন স্ট্রিং চেষ্টা করবে। তারা হল:
- ক্যোয়ারী প্যারামিটার সহ URL-এর সঠিক পথ।
- ক্যোয়ারী প্যারামিটার ছাড়াই URL-এর সঠিক পথ।
- চারটি পাথ রুট (/) থেকে শুরু করে এবং একটি ট্রেইলিং স্ল্যাশ সহ পর্যায়ক্রমে পাথ উপাদান যুক্ত করে গঠিত হয়।
নিম্নলিখিত উদাহরণগুলি চেকের আচরণকে চিত্রিত করে:
URL http://abcom/1/2.html?param=1
এর জন্য, ক্লায়েন্ট এই সম্ভাব্য স্ট্রিংগুলি চেষ্টা করবে:
a.b.com/1/2.html?param=1
a.b.com/1/2.html
a.b.com/
a.b.com/1/
b.com/1/2.html?param=1
b.com/1/2.html
b.com/
b.com/1/
URL http://abcdefcom/1.html
এর জন্য, ক্লায়েন্ট এই সম্ভাব্য স্ট্রিংগুলি চেষ্টা করবে:
a.b.c.d.e.f.com/1.html
a.b.c.d.e.f.com/
c.d.e.f.com/1.html
c.d.e.f.com/
d.e.f.com/1.html
d.e.f.com/
e.f.com/1.html
e.f.com/
f.com/1.html
f.com/
(দ্রষ্টব্য: bcdefcom
এড়িয়ে যান, যেহেতু আমরা শুধুমাত্র শেষ পাঁচটি হোস্টনামের উপাদান এবং সম্পূর্ণ হোস্টনাম নেব।)
URL http://1.2.3.4/1/
এর জন্য, ক্লায়েন্ট এই সম্ভাব্য স্ট্রিংগুলি চেষ্টা করবে:
1.2.3.4/1/
1.2.3.4/
URL http://example.co.uk/1
এর জন্য, ক্লায়েন্ট এই সম্ভাব্য স্ট্রিংগুলি চেষ্টা করবে:
example.co.uk/1
example.co.uk/
হ্যাশিং
গুগল সেফ ব্রাউজিং একচেটিয়াভাবে হ্যাশ ফাংশন হিসাবে SHA256 ব্যবহার করে। এই হ্যাশ ফাংশন উপরের অভিব্যক্তি প্রয়োগ করা উচিত.
সম্পূর্ণ 32-বাইট হ্যাশ, পরিস্থিতির উপর নির্ভর করে, 4 বাইট, 8 বাইট, বা 16 বাইটে কাটা হবে:
hashes.search পদ্ধতি ব্যবহার করার সময়, আমরা বর্তমানে অনুরোধে হ্যাশগুলিকে ঠিক 4 বাইটে ছোট করতে চাই। এই অনুরোধে অতিরিক্ত বাইট পাঠানো ব্যবহারকারীর গোপনীয়তার সাথে আপস করবে।
hashList.get পদ্ধতি বা hashLists.batchGet পদ্ধতি ব্যবহার করে স্থানীয় ডাটাবেসের জন্য তালিকা ডাউনলোড করার সময়, সার্ভার দ্বারা পাঠানো হ্যাশের দৈর্ঘ্য তালিকার প্রকৃতি এবং হ্যাশ দৈর্ঘ্যের ক্লায়েন্টের পছন্দ উভয় দ্বারা প্রভাবিত হয়, যা দ্বারা যোগাযোগ করা হয়
desired_hash_length
প্যারামিটার।
রিয়েল-টাইম ইউআরএল চেক পদ্ধতি
এই পদ্ধতিটি ব্যবহৃত হয় যখন ক্লায়েন্ট অপারেশনের রিয়েল-টাইম মোড বেছে নেয়।
এই পদ্ধতিটি একটি একক URL u
নেয় এবং SAFE
, UNSAFE
বা UNSURE
ফেরত দেয়। যদি এটি SAFE
ফিরে আসে তবে ইউআরএলটিকে Google নিরাপদ ব্রাউজিং দ্বারা নিরাপদ বলে মনে করা হবে। যদি এটি UNSAFE
ফেরত দেয় তবে ইউআরএলটিকে Google সেফ ব্রাউজিং দ্বারা সম্ভাব্য অনিরাপদ বলে মনে করা হয় এবং উপযুক্ত ব্যবস্থা নেওয়া উচিত: যেমন শেষ ব্যবহারকারীকে একটি সতর্কতা দেখানো, স্প্যাম ফোল্ডারে একটি প্রাপ্ত বার্তা সরানো, বা এগিয়ে যাওয়ার আগে ব্যবহারকারীর দ্বারা অতিরিক্ত নিশ্চিতকরণের প্রয়োজন৷ যদি এটি UNSURE
হয় তবে নিম্নলিখিত স্থানীয়-চেক পদ্ধতিটি পরে ব্যবহার করা উচিত।
-
expressions
ইউআরএলu
দ্বারা উত্পন্ন প্রত্যয়/প্রিফিক্স এক্সপ্রেশনের একটি তালিকা হতে দিন। -
expressionHashes
একটি তালিকা হতে দিন, যেখানে উপাদানগুলি প্রতিটিexpressions
এক্সপ্রেশনের SHA256 হ্যাশ। -
expressionHashes
প্রতিটিhash
জন্য:- যদি
hash
গ্লোবাল ক্যাশে পাওয়া যায়, তবেUNSURE
ফেরত দিন।
- যদি
-
expressionHashPrefixes
একটি তালিকা করা যাক, যেখানে উপাদানগুলি হলexpressionHashes
হ্যাশের প্রতিটি হ্যাশের প্রথম 4 বাইট। -
expressionHashPrefixes
প্রতিটিexpressionHashPrefix
জন্য:- স্থানীয় ক্যাশে
expressionHashPrefix
দেখুন। - যদি ক্যাশে করা এন্ট্রি পাওয়া যায়:
- বর্তমান সময় তার মেয়াদ শেষ হওয়ার সময়ের চেয়ে বড় কিনা তা নির্ধারণ করুন।
- যদি এটি বড় হয়:
- স্থানীয় ক্যাশে থেকে পাওয়া ক্যাশে করা এন্ট্রি সরান।
- লুপ দিয়ে চালিয়ে যান।
- যদি এটি বড় না হয়:
-
expressionHashPrefixes
থেকে এই বিশেষexpressionHashPrefix
সরান। -
expressionHashes
মধ্যে সংশ্লিষ্ট পূর্ণ হ্যাশ ক্যাশে করা এন্ট্রিতে পাওয়া যায় কিনা তা পরীক্ষা করুন। - পাওয়া গেলে,
UNSAFE
ফিরে যান। - যদি না পাওয়া যায়, লুপ দিয়ে চালিয়ে যান।
-
- ক্যাশে করা এন্ট্রি পাওয়া না গেলে, লুপ দিয়ে চালিয়ে যান।
- স্থানীয় ক্যাশে
- RPC SearchHashes বা REST পদ্ধতি hashes.search ব্যবহার করে Google Safe Browsing v5 সার্ভারে
expressionHashPrefixes
পাঠান। যদি একটি ত্রুটি ঘটে থাকে (নেটওয়ার্ক ত্রুটি, HTTP ত্রুটি, ইত্যাদি সহ),UNSURE
ফেরত দিন। অন্যথায়, প্রতিক্রিয়াটি SB সার্ভার থেকে প্রাপ্তresponse
হতে দিন, যা হুমকির প্রকৃতি (সোশ্যাল ইঞ্জিনিয়ারিং, ম্যালওয়্যার, ইত্যাদি) এবং সেইসাথে ক্যাশের মেয়াদ শেষ হওয়ার সময়সীমারexpiration
শনাক্তকারী কিছু সহায়ক তথ্য সহ সম্পূর্ণ হ্যাশের একটি তালিকা। -
response
প্রতিটিfullHash
জন্য:-
expiration
সাথে স্থানীয় ক্যাশেfullHash
ঢোকান।
-
-
response
প্রতিটিfullHash
জন্য:-
expressionHashes
হ্যাশেfullHash
খোঁজার ফলাফল হিসাবেisFound
. - যদি
isFound
মিথ্যা হয়, লুপ দিয়ে চালিয়ে যান। - যদি
isFound
সত্য হয়,UNSAFE
ফেরত দিন।
-
-
SAFE
ফিরে যান।
ক্লায়েন্ট কখন সার্ভারে expressionHashPrefixes
পাঠায় এই প্রোটোকলটি নির্দিষ্ট করে, এই প্রোটোকলটি উদ্দেশ্যমূলকভাবে সেগুলি কীভাবে পাঠাতে হয় তা নির্দিষ্ট করে না। উদাহরণস্বরূপ, ক্লায়েন্টের জন্য একক অনুরোধে সমস্ত expressionHashPrefixes
পাঠানো গ্রহণযোগ্য, এবং ক্লায়েন্টের জন্য পৃথক অনুরোধে সার্ভারে expressionHashPrefixes
প্রতিটি পৃথক প্রিফিক্স পাঠানোও গ্রহণযোগ্য (সম্ভবত সমান্তরালভাবে এগিয়ে যাওয়া)। expressionHashPrefixes
হ্যাশ প্রিফিক্সে হ্যাশ উপসর্গের সাথে সম্পর্কহীন বা এলোমেলোভাবে তৈরি করা হ্যাশ উপসর্গগুলি ক্লায়েন্টের পক্ষে পাঠানোও গ্রহণযোগ্য, যতক্ষণ না একটি অনুরোধে পাঠানো হ্যাশ উপসর্গের সংখ্যা 30-এর বেশি না হয়।
লোকাল থ্রেট লিস্ট ইউআরএল চেক পদ্ধতি
এই পদ্ধতিটি ব্যবহার করা হয় যখন ক্লায়েন্ট অপারেশনের স্থানীয় তালিকা মোড বেছে নেয়। এটি ব্যবহার করা হয় যখন ক্লায়েন্ট উপরের RealTimeCheck পদ্ধতিটি UNSURE
এর মান প্রদান করে।
এই পদ্ধতিটি একটি একক URL u
নেয় এবং SAFE
বা UNSAFE
ফেরত দেয়।
-
expressions
ইউআরএলu
দ্বারা উত্পন্ন প্রত্যয়/প্রিফিক্স এক্সপ্রেশনের একটি তালিকা হতে দিন। -
expressionHashes
একটি তালিকা হতে দিন, যেখানে উপাদানগুলি প্রতিটিexpressions
এক্সপ্রেশনের SHA256 হ্যাশ। -
expressionHashPrefixes
একটি তালিকা করা যাক, যেখানে উপাদানগুলি হলexpressionHashes
হ্যাশের প্রতিটি হ্যাশের প্রথম 4 বাইট। -
expressionHashPrefixes
প্রতিটিexpressionHashPrefix
জন্য:- স্থানীয় ক্যাশে
expressionHashPrefix
দেখুন। - যদি ক্যাশে করা এন্ট্রি পাওয়া যায়:
- বর্তমান সময় তার মেয়াদ শেষ হওয়ার সময়ের চেয়ে বড় কিনা তা নির্ধারণ করুন।
- যদি এটি বড় হয়:
- স্থানীয় ক্যাশে থেকে পাওয়া ক্যাশে করা এন্ট্রি সরান।
- লুপ দিয়ে চালিয়ে যান।
- যদি এটি বড় না হয়:
-
expressionHashPrefixes
থেকে এই বিশেষexpressionHashPrefix
সরান। -
expressionHashes
মধ্যে সংশ্লিষ্ট পূর্ণ হ্যাশ ক্যাশে করা এন্ট্রিতে পাওয়া যায় কিনা তা পরীক্ষা করুন। - পাওয়া গেলে,
UNSAFE
ফিরে যান। - যদি না পাওয়া যায়, লুপ দিয়ে চালিয়ে যান।
-
- ক্যাশে করা এন্ট্রি পাওয়া না গেলে, লুপ দিয়ে চালিয়ে যান।
- স্থানীয় ক্যাশে
-
expressionHashPrefixes
প্রতিটিexpressionHashPrefix
জন্য:- স্থানীয় হুমকি তালিকা ডাটাবেসে
expressionHashPrefix
দেখুন। - যদি
expressionHashPrefix
স্থানীয় হুমকি তালিকা ডাটাবেসে পাওয়া না যায় তবেexpressionHashPrefixes
থেকে এটি সরিয়ে দিন।
- স্থানীয় হুমকি তালিকা ডাটাবেসে
- RPC SearchHashes বা REST পদ্ধতি hashes.search ব্যবহার করে Google Safe Browsing v5 সার্ভারে
expressionHashPrefixes
পাঠান। যদি একটি ত্রুটি ঘটে থাকে (নেটওয়ার্ক ত্রুটি, HTTP ত্রুটি, ইত্যাদি সহ),SAFE
ফেরত দিন। অন্যথায়, প্রতিক্রিয়াটি SB সার্ভার থেকে প্রাপ্তresponse
হতে দিন, যা হুমকির প্রকৃতি (সোশ্যাল ইঞ্জিনিয়ারিং, ম্যালওয়্যার, ইত্যাদি) এবং সেইসাথে ক্যাশের মেয়াদ শেষ হওয়ার সময়সীমারexpiration
শনাক্তকারী কিছু সহায়ক তথ্য সহ সম্পূর্ণ হ্যাশের একটি তালিকা। -
response
প্রতিটিfullHash
জন্য:-
expiration
সাথে স্থানীয় ক্যাশেfullHash
ঢোকান।
-
-
response
প্রতিটিfullHash
জন্য:-
expressionHashes
হ্যাশেfullHash
খোঁজার ফলাফল হিসাবেisFound
. - যদি
isFound
মিথ্যা হয়, লুপ দিয়ে চালিয়ে যান। - যদি
isFound
সত্য হয়,UNSAFE
ফেরত দিন।
-
-
SAFE
ফিরে যান।
স্থানীয় ডাটাবেস ছাড়াই রিয়েল-টাইম ইউআরএল চেক পদ্ধতি
এই পদ্ধতিটি ব্যবহৃত হয় যখন ক্লায়েন্ট নো-স্টোরেজ রিয়েল-টাইম অপারেশন মোড বেছে নেয়।
এই পদ্ধতিটি একটি একক URL u
নেয় এবং SAFE
বা UNSAFE
ফেরত দেয়।
-
expressions
ইউআরএলu
দ্বারা উত্পন্ন প্রত্যয়/প্রিফিক্স এক্সপ্রেশনের একটি তালিকা হতে দিন। -
expressionHashes
একটি তালিকা হতে দিন, যেখানে উপাদানগুলি প্রতিটিexpressions
এক্সপ্রেশনের SHA256 হ্যাশ। -
expressionHashPrefixes
একটি তালিকা করা যাক, যেখানে উপাদানগুলি হলexpressionHashes
হ্যাশের প্রতিটি হ্যাশের প্রথম 4 বাইট। -
expressionHashPrefixes
প্রতিটিexpressionHashPrefix
জন্য:- স্থানীয় ক্যাশে
expressionHashPrefix
দেখুন। - যদি ক্যাশে করা এন্ট্রি পাওয়া যায়:
- বর্তমান সময় তার মেয়াদ শেষ হওয়ার সময়ের চেয়ে বড় কিনা তা নির্ধারণ করুন।
- যদি এটি বড় হয়:
- স্থানীয় ক্যাশে থেকে পাওয়া ক্যাশে করা এন্ট্রি সরান।
- লুপ দিয়ে চালিয়ে যান।
- যদি এটি বড় না হয়:
-
expressionHashPrefixes
থেকে এই বিশেষexpressionHashPrefix
সরান। -
expressionHashes
মধ্যে সংশ্লিষ্ট পূর্ণ হ্যাশ ক্যাশে করা এন্ট্রিতে পাওয়া যায় কিনা তা পরীক্ষা করুন। - পাওয়া গেলে,
UNSAFE
ফিরে যান। - যদি না পাওয়া যায়, লুপ দিয়ে চালিয়ে যান।
-
- ক্যাশে করা এন্ট্রি পাওয়া না গেলে, লুপ দিয়ে চালিয়ে যান।
- স্থানীয় ক্যাশে
- RPC SearchHashes বা REST পদ্ধতি hashes.search ব্যবহার করে Google Safe Browsing v5 সার্ভারে
expressionHashPrefixes
পাঠান। যদি একটি ত্রুটি ঘটে থাকে (নেটওয়ার্ক ত্রুটি, HTTP ত্রুটি, ইত্যাদি সহ),SAFE
ফেরত দিন। অন্যথায়, প্রতিক্রিয়াটি SB সার্ভার থেকে প্রাপ্তresponse
হতে দিন, যা হুমকির প্রকৃতি (সোশ্যাল ইঞ্জিনিয়ারিং, ম্যালওয়্যার, ইত্যাদি) এবং সেইসাথে ক্যাশের মেয়াদ শেষ হওয়ার সময়সীমারexpiration
শনাক্তকারী কিছু সহায়ক তথ্য সহ সম্পূর্ণ হ্যাশের একটি তালিকা। -
response
প্রতিটিfullHash
জন্য:-
expiration
সাথে স্থানীয় ক্যাশেfullHash
ঢোকান।
-
-
response
প্রতিটিfullHash
জন্য:-
expressionHashes
হ্যাশেfullHash
খোঁজার ফলাফল হিসাবেisFound
. - যদি
isFound
মিথ্যা হয়, লুপ দিয়ে চালিয়ে যান। - যদি
isFound
সত্য হয়,UNSAFE
ফেরত দিন।
-
-
SAFE
ফিরে যান।
রিয়েল-টাইম ইউআরএল চেক পদ্ধতির মতোই, এই পদ্ধতিটি সার্ভারে হ্যাশ উপসর্গগুলি কীভাবে পাঠাতে হয় তা নির্দিষ্ট করে না। উদাহরণস্বরূপ, ক্লায়েন্টের জন্য একক অনুরোধে সমস্ত expressionHashPrefixes
পাঠানো গ্রহণযোগ্য, এবং ক্লায়েন্টের জন্য পৃথক অনুরোধে সার্ভারে expressionHashPrefixes
প্রতিটি পৃথক প্রিফিক্স পাঠানোও গ্রহণযোগ্য (সম্ভবত সমান্তরালভাবে এগিয়ে যাওয়া)। expressionHashPrefixes
হ্যাশ প্রিফিক্সে হ্যাশ উপসর্গের সাথে সম্পর্কহীন বা এলোমেলোভাবে তৈরি করা হ্যাশ উপসর্গগুলি ক্লায়েন্টের পক্ষে পাঠানোও গ্রহণযোগ্য, যতক্ষণ না একটি অনুরোধে পাঠানো হ্যাশ উপসর্গের সংখ্যা 30-এর বেশি না হয়।
স্থানীয় ডাটাবেস রক্ষণাবেক্ষণ
Google নিরাপদ ব্রাউজিং v5 আশা করে যে ক্লায়েন্ট একটি স্থানীয় ডাটাবেস বজায় রাখবে, যখন ক্লায়েন্ট নো-স্টোরেজ রিয়েল-টাইম মোড বেছে নেয়। এই স্থানীয় ডাটাবেসের বিন্যাস এবং স্টোরেজ ক্লায়েন্টের উপর নির্ভর করে। এই স্থানীয় ডাটাবেসের বিষয়বস্তুকে ধারণাগতভাবে ফাইল হিসাবে বিভিন্ন তালিকা সমন্বিত একটি ফোল্ডার হিসাবে ভাবা যেতে পারে এবং এই ফাইলগুলির বিষয়বস্তু হল SHA256 হ্যাশ বা হ্যাশ উপসর্গ।
ডাটাবেস আপডেট
ক্লায়েন্ট নিয়মিতভাবে ডাটাবেস আপডেট করার জন্য hashList.get পদ্ধতি বা hashLists.batchGet পদ্ধতিতে কল করবে। যেহেতু সাধারণ ক্লায়েন্ট একবারে একাধিক তালিকা আপডেট করতে চাইবে, তাই hashLists.batchGet পদ্ধতি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।
তালিকাগুলি তাদের স্বতন্ত্র নামের দ্বারা চিহ্নিত করা হয়। নামগুলো ছোট ASCII স্ট্রিং কয়েক অক্ষর লম্বা।
V4 এর বিপরীতে, যেখানে তালিকাগুলি হুমকির ধরন, প্ল্যাটফর্মের ধরন, হুমকি এন্ট্রি টাইপ দ্বারা চিহ্নিত করা হয়, v5 তালিকাগুলি কেবল নাম দ্বারা চিহ্নিত করা হয়। এটি নমনীয়তা প্রদান করে যখন একাধিক v5 তালিকা একই হুমকি প্রকার ভাগ করতে পারে। প্ল্যাটফর্মের ধরন এবং হুমকির এন্ট্রি প্রকারগুলি v5 এ সরানো হয়েছে।
একবার একটি তালিকার জন্য একটি নাম বেছে নেওয়া হলে, এটির নাম পরিবর্তন করা হবে না। তদ্ব্যতীত, একবার একটি তালিকা উপস্থিত হলে, এটি কখনই সরানো হবে না (যদি তালিকাটি আর কার্যকর না হয় তবে এটি খালি হয়ে যাবে তবে বিদ্যমান থাকবে)। অতএব, Google সেফ ব্রাউজিং ক্লায়েন্ট কোডে এই নামগুলিকে হার্ড কোড করা উপযুক্ত৷
hashList.get পদ্ধতি এবং hashLists.batchGet পদ্ধতি উভয়ই ক্রমবর্ধমান আপডেট সমর্থন করে। ক্রমবর্ধমান আপডেট ব্যবহার করা ব্যান্ডউইথ সংরক্ষণ করে এবং কর্মক্ষমতা উন্নত করে। ক্রমবর্ধমান আপডেটগুলি তালিকার ক্লায়েন্টের সংস্করণ এবং তালিকার সর্বশেষ সংস্করণের মধ্যে একটি ডেল্টা প্রদান করে কাজ করে। (যদি একটি ক্লায়েন্ট নতুনভাবে স্থাপন করা হয় এবং কোন সংস্করণ উপলব্ধ না থাকে, তাহলে একটি সম্পূর্ণ আপডেট উপলব্ধ।) ক্রমবর্ধমান আপডেটে অপসারণ সূচক এবং সংযোজন রয়েছে। ক্লায়েন্ট প্রথমে তার স্থানীয় ডাটাবেস থেকে নির্দিষ্ট সূচকে এন্ট্রিগুলি সরিয়ে ফেলবে এবং তারপরে সংযোজনগুলি প্রয়োগ করবে বলে আশা করা হয়।
অবশেষে, দুর্নীতি প্রতিরোধ করার জন্য, ক্লায়েন্টকে সার্ভার দ্বারা প্রদত্ত চেকসামের বিপরীতে সংরক্ষিত ডেটা পরীক্ষা করা উচিত। যখনই চেকসাম মেলে না, ক্লায়েন্টের একটি সম্পূর্ণ আপডেট করা উচিত।
তালিকা বিষয়বস্তু ডিকোডিং
আকার কমাতে একটি বিশেষ এনকোডিং ব্যবহার করে সমস্ত তালিকা বিতরণ করা হয়। এই এনকোডিংটি এই স্বীকৃতি দিয়ে কাজ করে যে Google নিরাপদ ব্রাউজিং তালিকায় ধারণাগতভাবে, হ্যাশ বা হ্যাশ উপসর্গের একটি সেট রয়েছে, যা পরিসংখ্যানগতভাবে র্যান্ডম পূর্ণসংখ্যা থেকে আলাদা করা যায় না। যদি আমরা এই পূর্ণসংখ্যাগুলিকে বাছাই করি এবং তাদের সন্নিহিত পার্থক্য গ্রহণ করি, তাহলে এই ধরনের সন্নিহিত পার্থক্যটি এক অর্থে "ছোট" হবে বলে আশা করা হচ্ছে। Golomb-Rice এনকোডিং তখন এই ক্ষুদ্রতাকে কাজে লাগায়।
Google Safe Browsing v5-এ 4-বাইট ডেটা, 8-বাইট ডেটা, 16-বাইট ডেটা এবং 32-বাইট ডেটা পরিচালনা করার জন্য চারটি স্বতন্ত্র প্রকার রয়েছে৷ আসুন একটি উদাহরণ দেখি যেখানে তিনটি সংখ্যাগতভাবে পরপর 4-বাইট পূর্ণসংখ্যা এনকোড করা হয়েছে। রাইস প্যারামিটার, কে দ্বারা চিহ্নিত করা যাক, 3 হবে। এনকোডিংয়ের ভাগফলটি কেবলমাত্র k বিট দ্বারা ডানদিকে স্থানান্তরিত সংলগ্ন পার্থক্য মান। যেহেতু প্রদত্ত পূর্ণসংখ্যাগুলি পরপর, তাদের সন্নিহিত পার্থক্য হল 1, এবং 3 বিট দ্বারা স্থানান্তরিত করার পরে ভাগফল অংশটি শূন্য। ন্যূনতম উল্লেখযোগ্য k বিটগুলি হল 001৷ শূন্য ভাগফলকে একক 0 বিট হিসাবে এনকোড করা হয়েছে৷ অবশিষ্টটি হল 1, এবং 100 হিসাবে এনকোড করা হয়েছে৷ এটি আবার পুনরাবৃত্তি করা হয়েছে বিটস্ট্রিম 01000100 গঠন করতে৷ ফলে বিটস্ট্রিমটি 00100010 হিসাবে সামান্য এন্ডিয়ান ব্যবহার করে এনকোড করা হয়েছে৷ তাই এটি নিম্নলিখিত ডেটার সাথে মিলে যায়:
rice_parameter: 3
entries_count: 2
encoded_data: "\x22"
32-বিট পূর্ণসংখ্যাগুলির জন্য উপরের ডিকোডিং ধাপের পরে, ফলাফলটি সরাসরি অপসারণ সূচক বা সংযোজন হিসাবে ব্যবহারযোগ্য। v4 এর বিপরীতে, পরে বাইট-সোয়াপ করার দরকার নেই।
উপলব্ধ তালিকা
নিম্নলিখিত তালিকাগুলি v5alpha1-এ ব্যবহারের জন্য সুপারিশ করা হয়:
তালিকা নাম | সংশ্লিষ্ট v4 ThreatType Enum | বর্ণনা |
---|---|---|
gc | কোনোটিই নয় | এই তালিকাটি একটি বিশ্বব্যাপী ক্যাশে তালিকা। এটি একটি বিশেষ তালিকা যা শুধুমাত্র অপারেশনের রিয়েল-টাইম মোডে ব্যবহৃত হয়। |
se | SOCIAL_ENGINEERING | এই তালিকায় SOCIAL_ENGINEERING হুমকি ধরনের হুমকি রয়েছে৷ |
mw | MALWARE | এই তালিকায় ডেস্কটপ প্ল্যাটফর্মের জন্য ম্যালওয়্যার হুমকি ধরনের হুমকি রয়েছে। |
uws | UNWANTED_SOFTWARE | এই তালিকায় ডেস্কটপ প্ল্যাটফর্মের জন্য UNWANTED_SOFTWARE হুমকি ধরনের হুমকি রয়েছে। |
uwsa | UNWANTED_SOFTWARE | এই তালিকায় Android প্ল্যাটফর্মগুলির জন্য UNWANTED_SOFTWARE হুমকি ধরনের হুমকি রয়েছে৷ |
pha | POTENTIALLY_HARMFUL_APPLICATION | এই তালিকায় Android প্ল্যাটফর্মের জন্য POTENTIALLY_HARMFUL_APPLICATION হুমকি ধরনের হুমকি রয়েছে। |
অতিরিক্ত তালিকা পরবর্তী তারিখে উপলব্ধ হবে, যে সময়ে উপরের টেবিলটি প্রসারিত হবে।
ক্লায়েন্টকে উপরের কিছু বা সমস্ত তালিকা পুনরুদ্ধার করতে এবং তারপরে ক্লায়েন্টকে প্রক্সি সার্ভারের সাথে যোগাযোগ করতে একটি ক্যাশিং প্রক্সি সার্ভার পরিচালনা করার অনুমতি দেওয়া হয়। যদি এটি বাস্তবায়িত হয়, আমরা একটি ছোট ক্যাশে সময়কাল সুপারিশ করি যেমন পাঁচ মিনিট; ভবিষ্যতে এই ক্যাশে সময়কাল স্ট্যান্ডার্ড Cache-Control
HTTP হেডার ব্যবহার করে যোগাযোগ করা যেতে পারে।
আপডেট ফ্রিকোয়েন্সি
ক্লায়েন্টকে minimum_wait_duration
ফিল্ডে সার্ভারের প্রত্যাবর্তিত মান পরিদর্শন করা উচিত এবং ডাটাবেসের পরবর্তী আপডেটের সময়সূচী করতে এটি ব্যবহার করা উচিত। এই মানটি সম্ভবত শূন্য (ক্ষেত্রটি minimum_wait_duration
সম্পূর্ণভাবে অনুপস্থিত), এই ক্ষেত্রে ক্লায়েন্টকে অবিলম্বে অন্য আপডেট করতে হবে।
উদাহরণ অনুরোধ
এই বিভাগে Google নিরাপদ ব্রাউজিং অ্যাক্সেস করতে সরাসরি HTTP API ব্যবহার করার কিছু উদাহরণ নথিভুক্ত করা হয়েছে। এটি সাধারণত একটি জেনারেটেড ল্যাঙ্গুয়েজ বাইন্ডিং ব্যবহার করার পরামর্শ দেওয়া হয় কারণ এটি স্বয়ংক্রিয়ভাবে এনকোডিং এবং ডিকোডিং একটি সুবিধাজনক উপায়ে পরিচালনা করবে। যে বাঁধাই জন্য ডকুমেন্টেশন পড়ুন দয়া করে.
এখানে hashes.search পদ্ধতি ব্যবহার করে একটি উদাহরণ HTTP অনুরোধ:
GET https://safebrowsing.googleapis.com/v5/hashes:search?key=INSERT_YOUR_API_KEY_HERE&hashPrefixes=WwuJdQ
রেসপন্স বডি হল একটি প্রোটোকল-বাফার ফরম্যাট করা পেলোড যা আপনি ডিকোড করতে পারেন।
এখানে hashLists.batchGet পদ্ধতি ব্যবহার করে HTTP অনুরোধের একটি উদাহরণ রয়েছে:
GET https://safebrowsing.googleapis.com/v5alpha1/hashLists:batchGet?key=INSERT_YOUR_API_KEY_HERE&names=se&names=mw
রেসপন্স বডি হল, আবার, একটি প্রোটোকল-বাফার ফরম্যাট করা পেলোড যা আপনি ডিকোড করতে পারেন।
মাইগ্রেশন গাইড
আপনি যদি বর্তমানে v4 Update API ব্যবহার করেন, তাহলে স্থানীয় ডাটাবেস রিসেট বা মুছে ফেলা ছাড়াই v4 থেকে v5 পর্যন্ত একটি বিরামহীন মাইগ্রেশন পাথ রয়েছে। এই বিভাগে ডকুমেন্ট কিভাবে এটা করতে হবে.
রূপান্তর তালিকা আপডেট
v4-এ, তালিকাগুলি ডাউনলোড করার জন্য একজন হুমকিListUpdates.fetch পদ্ধতি ব্যবহার করবে। v5-এ, একজন hashLists.batchGet পদ্ধতিতে স্যুইচ করবে।
অনুরোধে নিম্নলিখিত পরিবর্তনগুলি করা উচিত:
- সম্পূর্ণভাবে v4
ClientInfo
অবজেক্ট সরান। একটি ডেডিকেটেড ফিল্ড ব্যবহার করে ক্লায়েন্টের শনাক্তকরণ সরবরাহ করার পরিবর্তে, শুধুমাত্র সুপরিচিত User-Agent হেডার ব্যবহার করুন। যদিও এই শিরোনামে ক্লায়েন্ট সনাক্তকরণ সরবরাহ করার জন্য কোনও নির্ধারিত বিন্যাস নেই, আমরা কেবল একটি স্পেস অক্ষর বা একটি স্ল্যাশ অক্ষর দ্বারা পৃথক করা মূল ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সংস্করণ অন্তর্ভুক্ত করার পরামর্শ দিই। - প্রতিটি v4
ListUpdateRequest
অবজেক্টের জন্য:- উপরের টেবিলে সংশ্লিষ্ট v5 তালিকার নামটি দেখুন এবং সেই নামটি v5 অনুরোধে সরবরাহ করুন।
-
threat_entry_type
বাplatform_type
মতো অপ্রয়োজনীয় ক্ষেত্রগুলি সরান। - v4-এর
state
ক্ষেত্রটি সরাসরি v5versions
ক্ষেত্রের সাথে সামঞ্জস্যপূর্ণ। একই বাইট স্ট্রিং যা v4-এstate
ফিল্ড ব্যবহার করে সার্ভারে পাঠানো হবেversions
ফিল্ড ব্যবহার করে v5-এ পাঠানো যেতে পারে। - v4 সীমাবদ্ধতার জন্য, v5
SizeConstraints
নামে একটি সরলীকৃত সংস্করণ ব্যবহার করে। অতিরিক্ত ক্ষেত্র যেমনregion
বাদ দেওয়া উচিত।
প্রতিক্রিয়াতে নিম্নলিখিত পরিবর্তনগুলি করা উচিত:
- v4 enum
ResponseType
টিকে কেবলpartial_update
নামে একটি বুলিয়ান ক্ষেত্র দ্বারা প্রতিস্থাপিত করা হয়েছে। -
minimum_wait_duration
ক্ষেত্রটি এখন শূন্য বা বাদ দেওয়া যেতে পারে। যদি তা হয়, ক্লায়েন্টকে অবিলম্বে আরেকটি অনুরোধ করতে অনুরোধ করা হচ্ছে। এটি তখনই ঘটে যখন ক্লায়েন্টSizeConstraints
এ সর্বোচ্চ ডাটাবেসের আকারের চেয়ে সর্বাধিক আপডেটের আকারের উপর একটি ছোট সীমাবদ্ধতা নির্দিষ্ট করে। - 32-বিট পূর্ণসংখ্যার জন্য রাইস ডিকোডিং অ্যালগরিদম সামঞ্জস্য করতে হবে। পার্থক্য হল যে এনকোড করা তথ্য একটি ভিন্ন endianness সঙ্গে এনকোড করা হয়. v4 এবং v5 উভয় ক্ষেত্রে, 32-বিট হ্যাশ উপসর্গগুলি অভিধানিকভাবে সাজানো হয়। কিন্তু v4 তে, সাজানো হলে সেই উপসর্গগুলিকে ছোট এন্ডিয়ান হিসাবে ধরা হয়, যেখানে v5 তে এই উপসর্গগুলিকে সাজানোর সময় বড় এন্ডিয়ান হিসাবে ধরা হয়। এর মানে হল যে ক্লায়েন্টকে কোনও সাজানোর দরকার নেই, যেহেতু অভিধানিক বাছাই বড় এন্ডিয়ানের সাথে সংখ্যাসূচক সাজানোর মতো। V4 এর Chromium বাস্তবায়নে এই ধরণের একটি উদাহরণ এখানে পাওয়া যাবে। এই ধরনের বাছাই অপসারণ করা যেতে পারে.
- অন্যান্য হ্যাশ দৈর্ঘ্যের জন্য রাইস ডিকোডিং অ্যালগরিদম প্রয়োগ করতে হবে।
হ্যাশ অনুসন্ধান রূপান্তর
v4 তে, একজন সম্পূর্ণ হ্যাশ পেতে fullHashes.find পদ্ধতি ব্যবহার করবে। v5 এর সমতুল্য পদ্ধতি হল hashes.search পদ্ধতি ।
অনুরোধে নিম্নলিখিত পরিবর্তনগুলি করা উচিত:
- শুধুমাত্র 4 বাইট দৈর্ঘ্যের হ্যাশ প্রিফিক্স পাঠানোর জন্য কোডটি গঠন করুন।
- সম্পূর্ণভাবে v4
ClientInfo
অবজেক্টগুলি সরান। একটি ডেডিকেটেড ফিল্ড ব্যবহার করে ক্লায়েন্টের শনাক্তকরণ সরবরাহ করার পরিবর্তে, শুধুমাত্র সুপরিচিত User-Agent হেডার ব্যবহার করুন। যদিও এই শিরোনামে ক্লায়েন্ট সনাক্তকরণ সরবরাহ করার জন্য কোনও নির্ধারিত বিন্যাস নেই, আমরা কেবল একটি স্পেস অক্ষর বা একটি স্ল্যাশ অক্ষর দ্বারা পৃথক করা মূল ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সংস্করণ অন্তর্ভুক্ত করার পরামর্শ দিই। -
client_states
ক্ষেত্রটি সরান। এর আর প্রয়োজন নেই। -
threat_types
এবং অনুরূপ ক্ষেত্র অন্তর্ভুক্ত করার আর প্রয়োজন নেই।
প্রতিক্রিয়াতে নিম্নলিখিত পরিবর্তনগুলি করা উচিত:
-
minimum_wait_duration
ক্ষেত্রটি সরানো হয়েছে। ক্লায়েন্ট সর্বদা প্রয়োজনীয় ভিত্তিতে একটি নতুন অনুরোধ জারি করতে পারে। - ভি 4
ThreatMatch
অবজেক্টটিFullHash
অবজেক্টে সরল করা হয়েছে। - ক্যাশিংকে একক ক্যাশে সময়কালে সরল করা হয়েছে। ক্যাশের সাথে কথোপকথনের জন্য উপরের পদ্ধতিগুলি দেখুন।