আঙুলের ছাপ

ফিঙ্গারপ্রিন্টিং মানে হল একজন ব্যবহারকারী যখন আপনার ওয়েবসাইটে ফিরে আসে তখন তাকে শনাক্ত করার চেষ্টা করা বা বিভিন্ন ওয়েবসাইটে একই ব্যবহারকারীকে শনাক্ত করা। অনেক বৈশিষ্ট্য আপনার সেটআপ এবং অন্য কারো মধ্যে পার্থক্য হতে পারে. উদাহরণস্বরূপ, আপনি একটি ভিন্ন ধরনের ডিভাইস এবং একটি ভিন্ন ব্রাউজার ব্যবহার করছেন, একটি ভিন্ন স্ক্রীনের আকার আছে এবং বিভিন্ন ফন্ট ইনস্টল করা আছে। যদি আমার কাছে "Dejavu Sans" ফন্টটি ইনস্টল করা থাকে এবং আপনি না করেন, তাহলে যে কোনো ওয়েবসাইট সেই ফন্টটি পরীক্ষা করে আপনার এবং আমার মধ্যে পার্থক্য বলতে পারে। এইভাবে ফিঙ্গারপ্রিন্টিং কাজ করে; আপনি এই ডেটা পয়েন্টগুলির একটি সংগ্রহ তৈরি করেন এবং প্রতিটি ব্যবহারকারীদের মধ্যে পার্থক্য করার আরও উপায় প্রদান করে।

আরও একটি আনুষ্ঠানিক সংজ্ঞা এইরকম দেখতে পারে: ফিঙ্গারপ্রিন্টিং হল ব্যবহারকারীর সেটআপের সুস্পষ্ট এবং অ-স্পষ্ট দীর্ঘস্থায়ী বৈশিষ্ট্যগুলিকে যতটা সম্ভব অন্য ব্যবহারকারীদের থেকে আলাদা করার চেষ্টা করার জন্য ব্যবহার করা।

কেন ফিঙ্গারপ্রিন্টিং ব্যবহারকারীর গোপনীয়তাকে বাধা দেয়

কিছু এজ কেস আছে যেখানে একজন ব্যবহারকারীর আঙ্গুলের ছাপ গুরুত্বপূর্ণ: জালিয়াতি সনাক্তকরণ, উদাহরণস্বরূপ। কিন্তু ফিঙ্গারপ্রিন্টিং সাইট জুড়ে ব্যবহারকারীদের ট্র্যাক করতেও ব্যবহার করা যেতে পারে, এবং সেই ট্র্যাকিং প্রায়শই ব্যবহারকারীদের সম্মতি ছাড়াই করা হয়, বা কিছু ক্ষেত্রে, একটি অবৈধ সম্মতির ভিত্তিতে যা ব্যবহারকারীকে পর্যাপ্তভাবে অবহিত করে না। এটি হয়ে গেলে, সেই ব্যবহারকারীরা প্রায়শই এটিকে কিছুটা বিরক্তিকর মনে করবে এবং বরং বিশ্বাসঘাতকতা বোধ করবে।

আঙুলের ছাপ মানে গোপনে একজন ব্যবহারকারীকে অন্য ব্যবহারকারী থেকে আলাদা করার উপায় খুঁজে বের করা। ফিঙ্গারপ্রিন্টিং ব্যবহার করা যেতে পারে যে এটি এখনও একই ওয়েবসাইটে একই ব্যবহারকারী, অথবা একই সময়ে দুটি ভিন্ন ব্রাউজার প্রোফাইলে একই ব্যবহারকারীকে চিনতে। এর মানে হল যে সমস্ত সাইট জুড়ে ব্যবহারকারীদের ট্র্যাক করার জন্য ফিঙ্গারপ্রিন্টিং ব্যবহার করা যেতে পারে। ট্র্যাকিংয়ের নির্ধারক এবং প্রকাশ্য পদ্ধতি, যেমন একটি অনন্য ব্যবহারকারী-নির্দিষ্ট আইডি সহ একটি কুকি সংরক্ষণ করা, কিছু পরিমাণে ব্যবহারকারীদের দ্বারা পর্যবেক্ষণ করা এবং নিয়ন্ত্রিত হতে পারে (এবং পূর্ববর্তী মডিউলটি এই পদ্ধতিগুলির কিছু ব্যাখ্যা করেছে)। কিন্তু আঙুলের ছাপ ঠিক এড়ানো আরও কঠিন কারণ এটি গোপন; এটি অপরিবর্তনীয় বৈশিষ্ট্যের উপর নির্ভর করে এবং সম্ভবত অদৃশ্যভাবে ঘটে। এই কারণে এটি "আঙ্গুলের ছাপ" বলা হয়। আপনার আঙ্গুলের ছাপ পরিবর্তন করা কঠিন, তা আপনার ডিজিটাল হোক বা আপনার আঙ্গুলের প্রান্তে থাকা।

ব্রাউজার বিক্রেতারা জানেন যে ব্যবহারকারীরা ট্র্যাক করা পছন্দ করেন না এবং ফিঙ্গারপ্রিন্টিং সীমিত করার জন্য ক্রমাগত বৈশিষ্ট্যগুলি প্রয়োগ করছেন (যার মধ্যে কিছু আমরা পূর্ববর্তী মডিউলে দেখেছি)। এখানে, আমরা দেখছি এই বৈশিষ্ট্যগুলি কীভাবে আপনার ব্যবসার প্রয়োজনীয়তাগুলিকে প্রভাবিত করতে পারে এবং কীভাবে আপনি গোপনীয়তা-সুরক্ষার উপায়ে যা করতে চান তা এখনও করতে পারেন৷ এটি আঙ্গুলের ছাপের বিরুদ্ধে ব্রাউজার সুরক্ষা কীভাবে আপনাকে আঙ্গুলের ছাপ করা বন্ধ করবে তা না করে আপনি কী করবেন এবং কীভাবে তা প্রভাবিত করবে সে সম্পর্কে আরও বেশি।

বাস্তবে, বেশিরভাগ বিকাশকারী এবং বেশিরভাগ ব্যবসার ব্যবহারকারীদের আঙুলের ছাপ দেওয়ার দরকার নেই। যদি আপনার অ্যাপের ব্যবহারকারীদের সাইন ইন করার প্রয়োজন হয়, তাহলে আপনার ব্যবহারকারীরা তাদের সম্মতিতে আপনার কাছে নিজেদের পরিচয় দিচ্ছেন এবং এমনভাবে যাতে তারা যে কোনো সময় একতরফাভাবে অপ্ট আউট করতে পারেন। কোন ব্যবহারকারীরা লগ ইন করেছেন তা বোঝার এটি একটি গোপনীয়তা-সুরক্ষা পদ্ধতি৷ আপনার অ্যাপটিতে ব্যবহারকারীদের সাইন ইন করার প্রয়োজন নাও হতে পারে, যা আপনার ব্যবহারকারীদের গোপনীয়তার আরও বেশি সুরক্ষামূলক (এবং তারপরে আপনি আপনার প্রয়োজনীয় ডেটা সংগ্রহ করছেন)৷

করবেন

ফিঙ্গারপ্রিন্টিংয়ের জন্য আপনার তৃতীয় পক্ষের মূল্যায়ন করুন। তৃতীয় পক্ষের মডিউলের অংশ হিসাবে, আপনার কাছে ইতিমধ্যেই আপনার অন্তর্ভুক্ত যে কোনো তৃতীয় পক্ষের পরিষেবার তালিকা এবং তারা যে ওয়েব অনুরোধগুলি করে তা থাকতে পারে৷ কোন তথ্য উদ্ভবকারীর কাছে ফেরত পাঠানো হচ্ছে তা দেখতে সেই অনুরোধগুলি পরিদর্শন করা সম্ভব হতে পারে, যদি থাকে। যাইহোক, এটা প্রায়ই কঠিন; ফিঙ্গারপ্রিন্টিং প্রকৃতিগতভাবে একটি গোপন প্রক্রিয়া যা ব্যবহারকারীর অনুমোদনের সাপেক্ষে নয় এমন ডেটা অনুরোধ করা জড়িত।

ব্যবহারে আঙ্গুলের ছাপের ইঙ্গিতগুলি দেখতে আপনার তৃতীয় পক্ষের পরিষেবা এবং নির্ভরতাগুলির গোপনীয়তা নীতিগুলিও পড়া মূল্যবান৷ এটি কখনও কখনও "সম্ভাব্য ম্যাচিং" হিসাবে উল্লেখ করা হয়, বা "নির্ধারণমূলক ম্যাচিং" এর বিপরীতে সম্ভাব্য ম্যাচিং কৌশলগুলির একটি অংশ হিসাবে।

ফিঙ্গারপ্রিন্টিং কিভাবে কাজ করে

প্রায়শই এই সমস্ত গুণাবলীর আপনার ব্যক্তিগত সংমিশ্রণটি আপনার কাছে অনন্য, বা অন্তত অনুরূপ লোকদের একটি ছোট গোষ্ঠীর কাছে; এটি আপনাকে গোপনে ট্র্যাক করতে ব্যবহার করা যেতে পারে।

পাশাপাশি: প্যাসিভ এবং সক্রিয় ফিঙ্গারপ্রিন্টিং

প্যাসিভ এবং সক্রিয় ফিঙ্গারপ্রিন্টিং কৌশলগুলির মধ্যে আঁকার জন্য এখানে একটি দরকারী পার্থক্য রয়েছে। একটি প্যাসিভ ফিঙ্গারপ্রিন্টিং কৌশল হল এমন একটি যা তথ্য ব্যবহার করে যা ওয়েবসাইটকে ডিফল্টরূপে দেওয়া হয়; একটি সক্রিয় ফিঙ্গারপ্রিন্টিং কৌশল হল এমন একটি যা অতিরিক্ত তথ্যের জন্য ব্রাউজারকে স্পষ্টভাবে জিজ্ঞাসাবাদ করে। এই পার্থক্যটি গুরুত্বপূর্ণ হওয়ার কারণ হল ব্রাউজারগুলি সক্রিয় কৌশলগুলি সনাক্ত করতে এবং বাধা দেওয়ার বা প্রশমিত করার চেষ্টা করতে পারে। API গুলিকে সীমাবদ্ধ করা যেতে পারে, অথবা ব্যবহারকারীর অনুমতি চাওয়ার জন্য একটি ডায়ালগের পিছনে গেটওয়ে করা যেতে পারে (এবং তাই ব্যবহারকারীকে সতর্ক করা যে সেগুলি ব্যবহার করা হচ্ছে, বা ব্যবহারকারীকে ডিফল্টরূপে সেগুলি অস্বীকার করার অনুমতি দেওয়া)। একটি প্যাসিভ টেকনিক হল এমন একটি ডেটা ব্যবহার করে যা ইতিমধ্যেই ওয়েবসাইটে দেওয়া হয়েছে, প্রায়শই কারণ ঐতিহাসিকভাবে, তথ্য সুপারহাইওয়ের প্রারম্ভিক দিনগুলিতে, সেই তথ্য সমস্ত সাইটে দেওয়া হয়েছিল৷ ব্যবহারকারী-এজেন্ট স্ট্রিং এটির একটি উদাহরণ, এবং আমরা এটিকে আরও বিশদে দেখব। এটি ব্যবহারকারীর ব্রাউজার, সংস্করণ এবং অপারেটিং সিস্টেম সম্পর্কে প্রচুর তথ্য প্রদানের জন্য দরকারী বলে বিবেচিত হয়েছিল, যাতে একটি ওয়েবসাইট তার উপর ভিত্তি করে বিভিন্ন জিনিস উপস্থাপন করতে পারে। যাইহোক, এটি উপলব্ধ পৃথক তথ্যের পরিমাণও বৃদ্ধি করে, তথ্য যা একজন ব্যবহারকারীকে অন্য ব্যবহারকারীকে সনাক্ত করতে সহায়তা করে; এবং তাই এই ধরনের তথ্য ক্রমবর্ধমানভাবে আর পাওয়া যাচ্ছে না, বা অন্তত হিমায়িত করা হচ্ছে যাতে এটি আর আলাদা করা যায় না। আপনি যা করেন তা যদি এই তথ্যের উপর নির্ভর করে—উদাহরণস্বরূপ, আপনি যদি ব্যবহারকারী-এজেন্টের উপর নির্ভর করে বিভিন্ন কোড শাখা গ্রহণ করেন—তাহলে ব্রাউজারগুলি ক্রমবর্ধমানভাবে সেই তথ্য জমা বা বন্ধ করার ফলে এই কোডটি ভেঙে যেতে পারে। পরীক্ষা এখানে সেরা প্রতিরক্ষা (পরে দেখুন)।

পাশাপাশি: আঙুলের ছাপ পরিমাপ করা

এই ডেটা পয়েন্টগুলির প্রতিটি কত তথ্য সরবরাহ করে তার প্রযুক্তিগত পরিমাপকে এনট্রপি বলা হয় এবং বিটগুলিতে পরিমাপ করা হয়। একটি বৈশিষ্ট্য যেখানে অনেকগুলি সম্ভাব্য মান রয়েছে (যেমন ফন্টের তালিকা ইনস্টল করা) মোটে অনেকগুলি বিট অবদান রাখতে পারে, যার ফলে খুব বেশি আলাদা ক্ষমতা ছাড়া কিছু (যেমন আপনি কোন অপারেটিং সিস্টেম ব্যবহার করছেন) শুধুমাত্র কয়েকটি যোগ করতে পারে . এইচটিটিপি অ্যালম্যানাক বর্ণনা করে যে কীভাবে বিদ্যমান ফিঙ্গারপ্রিন্টিং লাইব্রেরিগুলি বিভিন্ন API-এর প্রতিক্রিয়াগুলিকে "হ্যাশ" তে একত্রিত করার এই প্রক্রিয়াটিকে স্বয়ংক্রিয় করে, যা ব্যবহারকারীদের একটি ছোট গোষ্ঠীকে সনাক্ত করতে পারে, সম্ভবত শুধুমাত্র একটিকেও। Maud Nalpas এই YouTube ভিডিওতে কিছু বিশদভাবে এটি কভার করেছেন, কিন্তু, সংক্ষেপে, কল্পনা করুন যে আপনি আপনার বন্ধুদের তাদের প্রিয় সঙ্গীত, প্রিয় খাবার এবং তারা যে ভাষায় কথা বলে তাদের একটি তালিকা দেখতে পাচ্ছেন … কিন্তু তাদের নাম মুছে ফেলা হয়েছে। এটা খুবই সম্ভব যে যেকোন একজনের তালিকা আপনার বন্ধুদের মধ্যে অনন্যভাবে তাদের সনাক্ত করবে, অথবা অন্তত তালিকাটি শুধুমাত্র কয়েকটি লোকের মধ্যে সংকুচিত করবে। এইভাবে ফিঙ্গারপ্রিন্টিং কাজ করে; আপনার পছন্দের জিনিসগুলির তালিকা "হ্যাশ" হয়ে যায়। সেই হ্যাশের সাহায্যে, দুটি ভিন্ন সংযোগহীন সাইটে একই ব্যক্তি হিসাবে একজন ব্যবহারকারীকে সনাক্ত করা সহজ হয়ে যায়, যা ট্র্যাকিংয়ের লক্ষ্য: গোপনীয়তার জন্য ব্যবহারকারীর আকাঙ্ক্ষাকে ফাঁকি দেওয়া।

আঙ্গুলের ছাপের বিরুদ্ধে ব্রাউজারগুলি কী করে?

গুরুত্বপূর্ণভাবে, ব্রাউজার বিক্রেতারা একটি ওয়েবসাইট (অথবা একটি ওয়েবসাইটে অন্তর্ভুক্ত একটি তৃতীয় পক্ষ) ব্যবহারকারীর জন্য একটি স্বতন্ত্র ফিঙ্গারপ্রিন্ট গণনা করার জন্য বা সেই আঙ্গুলের ছাপের স্বতন্ত্রতায় অবদান রাখার জন্য বিভিন্ন তথ্যের বিটের জন্য অনেকগুলি উপায় সম্পর্কে খুব সচেতন। এর মধ্যে কিছু উপায় সুস্পষ্ট এবং ইচ্ছাকৃত, যেমন ব্রাউজারের ব্যবহারকারী-এজেন্ট স্ট্রিং, যা প্রায়শই ব্রাউজার, অপারেটিং সিস্টেম এবং ব্যবহারে থাকা সংস্করণকে সনাক্ত করে (এবং আপনি এবং আমি ভিন্ন ব্রাউজার ব্যবহার করলে আমার থেকে আপনাকে আলাদা করতে অবদান রাখে) . কিছু উপায় ইচ্ছাকৃতভাবে ফিঙ্গারপ্রিন্টযোগ্য হওয়ার জন্য তৈরি করা হয় না কিন্তু যাই হোক না কেন, যেমন ফন্টের তালিকা, বা ব্রাউজারে উপলব্ধ ভিডিও এবং অডিও ডিভাইস। (ব্রাউজারকে এই ডিভাইসগুলি ব্যবহার করতে হবে না, শুধু নাম অনুসারে সেগুলির একটি তালিকা পান৷) এবং কিছু প্রকাশের পরে একটি ফিঙ্গারপ্রিন্টে অবদানকারী হিসাবে প্রতিষ্ঠিত হয়েছে, যেমন একটি ক্যানভাসে ফন্টগুলির অ্যান্টিলিয়াসিংয়ের সঠিক পিক্সেল রেন্ডারিং উপাদান আরও অনেক আছে, এবং আপনার ব্রাউজারটি আমার থেকে আলাদা হওয়ার প্রতিটি উপায় এনট্রপি যোগ করে এবং তাই সম্ভাব্যভাবে আপনার এবং আমার মধ্যে পার্থক্য বলার উপায়ে অবদান রাখে এবং ওয়েবসাইট জুড়ে যতটা সম্ভব অনন্যভাবে একজন ব্যক্তিকে চিহ্নিত করে। https://amiunique.org- এর সম্ভাব্য আঙ্গুলের ছাপ-অবদানকারী বৈশিষ্ট্যগুলির একটি দীর্ঘ (কিন্তু অবশ্যই ব্যাপক নয়) তালিকা রয়েছে এবং তালিকাটি সর্বদা বৃদ্ধি পাচ্ছে (কারণ ব্যবহারকারীদের আঙ্গুলের ছাপ দিতে সক্ষম হওয়ার জন্য প্রচুর আর্থিক আগ্রহ রয়েছে, এমনকি ব্যবহারকারীরা না করলেও এটা চাই না বা সম্ভবত এটি আশা করবেন না)।

কিছু শক্তিশালী API সমর্থন করছে না

ব্যবহারকারীর আঙ্গুলের ছাপ গণনা করার জন্য এই সমস্ত পদ্ধতির জন্য ব্রাউজার বিক্রেতাদের প্রতিক্রিয়া হল এই APIগুলি থেকে উপলব্ধ এনট্রপির পরিমাণ কমানোর উপায় খুঁজে বের করা। সবচেয়ে সীমাবদ্ধ বিকল্প হল প্রথম স্থানে তাদের বাস্তবায়ন না করা। এটি কিছু প্রধান ব্রাউজার দ্বারা বিভিন্ন ধরণের হার্ডওয়্যার এবং ডিভাইস API-এর জন্য করা হয়েছে (যেমন ক্লায়েন্ট-সাইড ওয়েব অ্যাপ থেকে NFC এবং ব্লুটুথ অ্যাক্সেস), আঙ্গুলের ছাপ এবং গোপনীয়তা সংক্রান্ত উদ্বেগগুলি কেন সেগুলি বাস্তবায়িত হয়নি তার কারণ হিসাবে উল্লেখ করা হয়েছে৷ এটি, স্পষ্টতই, আপনার অ্যাপস এবং পরিষেবাগুলিকে প্রভাবিত করতে পারে: আপনি এমন একটি ব্রাউজারে একটি API ব্যবহার করতে পারবেন না যা এটি বাস্তবায়ন করে না এবং এটি বিবেচনা থেকে কিছু হার্ডওয়্যার পদ্ধতিকে সীমাবদ্ধ বা সম্পূর্ণভাবে বন্ধ করতে পারে।

ব্যবহারকারীর অনুমতি গেটওয়ে

ব্রাউজার বিক্রেতাদের দ্বারা নেওয়া একটি দ্বিতীয় পদ্ধতি হ'ল নির্দিষ্ট ব্যবহারকারীর অনুমতি ছাড়াই API বা ডেটা অ্যাক্সেস প্রতিরোধ করা। এই পদ্ধতিটি প্রায়শই নিরাপত্তার কারণেও নেওয়া হয়—একটি ওয়েবসাইট আপনার অনুমতি ছাড়া আপনার ওয়েবক্যামের সাথে ছবি তুলতে সক্ষম হবে না! কিন্তু এখানে, গোপনীয়তা এবং নিরাপত্তা একই ধরনের স্বার্থ থাকতে পারে। কারো অবস্থান শনাক্ত করা অবশ্যই একটি গোপনীয়তা লঙ্ঘন, তবে এটি আঙ্গুলের ছাপের স্বতন্ত্রতার জন্যও একটি অবদানকারী। ভূ-অবস্থান দেখার অনুমতির প্রয়োজন হলে অতিরিক্ত এনট্রপি কমে যায় না যা একটি অবস্থান সেই আঙ্গুলের ছাপের স্বতন্ত্রতাকে যোগ করে, তবে এটি মূলত আঙ্গুলের ছাপের জন্য ভূ-অবস্থান ব্যবহার করে বাদ দেয় কারণ এটি আর অদৃশ্যভাবে করা হচ্ছে না। আঙ্গুলের ছাপের পুরো পয়েন্টটি গোপনে ব্যবহারকারীদের একে অপরের থেকে আলাদা করা। আপনি যদি ব্যবহারকারীর জন্য প্রস্তুত হন যে আপনি তাদের সনাক্ত করার চেষ্টা করছেন, তাহলে আপনার আঙ্গুলের ছাপ কৌশলের প্রয়োজন নেই: ব্যবহারকারীকে একটি অ্যাকাউন্ট তৈরি করতে বলুন এবং এটি দিয়ে লগ ইন করুন৷

অনির্দেশ্যতা যোগ করা হচ্ছে

কিছু ক্ষেত্রে নেওয়া তৃতীয় একটি পদ্ধতি হল ব্রাউজার বিক্রেতাদের API-এর প্রতিক্রিয়াগুলিকে "ফজ" করার জন্য যাতে সেগুলিকে কম দানাদার এবং এইভাবে কম সনাক্ত করা যায়। এটিকে ডেটা মডিউলের র্যান্ডমাইজড রেসপন্স মেকানিজমের অংশ হিসাবে বর্ণনা করা হয়েছিল যা ব্যবহারকারীদের কাছ থেকে ডেটা সংগ্রহ করার সময় আপনি যা করতে পারেন, অসাবধানতাবশত ডেটা সংগ্রহ করা এড়াতে যা সনাক্ত করে। ব্রাউজার বিক্রেতারা ওয়েব অ্যাপ এবং তৃতীয় পক্ষের জন্য উপলব্ধ API ডেটাতে এই পদ্ধতিটি গ্রহণ করতে পারে। এটির একটি উদাহরণ হল window.performance.now() থেকে পৃষ্ঠার কার্যক্ষমতা পরিমাপ করতে ব্যবহৃত অত্যন্ত সঠিক সময় API । ব্রাউজার এই মানগুলিকে মাইক্রোসেকেন্ড নির্ভুলতা জানে, কিন্তু ফেরত দেওয়া মানগুলি ইচ্ছাকৃতভাবে আঙ্গুলের ছাপের ব্যবহার এড়াতে নিকটতম 20 মাইক্রোসেকেন্ডের সীমানায় বৃত্তাকার করে নির্ভুলভাবে হ্রাস করা হয় (এবং সময় আক্রমণ এড়াতে নিরাপত্তার জন্যও, স্বীকার করেই)। এখানে লক্ষ্য হল APIগুলি কার্যকর থাকা নিশ্চিত করা, কিন্তু প্রতিক্রিয়াগুলিকে কম শনাক্ত করা: সারমর্মে, আপনার ডিভাইসটিকে আপনার কাছে অদ্ভুত না হয়ে অন্য সবার ডিভাইসের মতো করে দেখানোর মাধ্যমে "হার্ড ইমিউনিটি" প্রদান করা। সাফারি এই কারণেই সিস্টেম কনফিগারেশনের একটি সরলীকৃত সংস্করণ উপস্থাপন করে

একটি গোপনীয়তা বাজেট কার্যকর করা

গোপনীয়তা বাজেট হল এমন একটি প্রস্তাব যা ব্রাউজারগুলি প্রতিটি আঙ্গুলের ছাপের পৃষ্ঠের দ্বারা প্রকাশিত তথ্য অনুমান করে। এটি এখনও ব্রাউজারে প্রয়োগ করা হয়নি। লক্ষ্য হল ব্যবহারকারীর গোপনীয়তা রক্ষা করার সময় শক্তিশালী API-কে অনুমতি দেওয়া। গোপনীয়তা বাজেট প্রস্তাব সম্পর্কে আরও জানুন

একটি বিস্তৃত পরীক্ষার পরিবেশ ব্যবহার করুন

এই সবগুলি আপনি কীভাবে অ্যাপ এবং পরিষেবাগুলি তৈরি করবেন তা প্রভাবিত করবে৷ বিশেষ করে, এই এলাকায় ব্রাউজার এবং প্ল্যাটফর্ম জুড়ে প্রতিক্রিয়া এবং পদ্ধতির বিস্তৃত বৈচিত্র্য রয়েছে। এর মানে হল যে একাধিক ভিন্ন পরিবেশে আপনার কাজ পরীক্ষা করা গুরুত্বপূর্ণ । এটি অবশ্যই, সর্বদা গুরুত্বপূর্ণ, তবে এটি অনুমান করা যুক্তিসঙ্গত হতে পারে যে HTML রেন্ডারিং বা CSS একটি প্রদত্ত রেন্ডারিং ইঞ্জিনের জন্য ধ্রুবক থাকবে, ইঞ্জিনটি কোন ব্রাউজার বা প্ল্যাটফর্মে থাকুক না কেন (এবং তাই এটি পরীক্ষা করার জন্য লোভনীয় হতে পারে শুধুমাত্র একটি ব্লিঙ্ক-ভিত্তিক ব্রাউজার, উদাহরণস্বরূপ)। এটি এপিআই ব্যবহারের ক্ষেত্রে সুনির্দিষ্টভাবে নয় কারণ যে ব্রাউজারগুলি একটি রেন্ডারিং ইঞ্জিন ভাগ করে তারা কীভাবে আঙ্গুলের ছাপের বিরুদ্ধে তাদের API পৃষ্ঠকে শক্ত করে তার উপর নাটকীয়ভাবে ভিন্ন হতে পারে।

করবেন

  • পরীক্ষা করার সময় আপনাকে অগ্রাধিকার দেওয়া উচিত এমন ব্রাউজারগুলির সেটকে গাইড করতে আপনার নিজস্ব বিশ্লেষণ এবং শ্রোতা পরীক্ষা করুন৷
  • ফায়ারফক্স, ক্রোম, এজ, ডেস্কটপে সাফারি, অ্যান্ড্রয়েডে ক্রোম এবং স্যামসাং ইন্টারনেট এবং iOS-এ সাফারি পরীক্ষা করার জন্য ব্রাউজারগুলির একটি ভাল সেট। এটি নিশ্চিত করে যে আপনি তিনটি প্রধান রেন্ডারিং ইঞ্জিন (ফায়ারফক্সে গেকো, ক্রোমে ব্লিঙ্কের বিভিন্ন কাঁটা, এজ, এবং স্যামসাং ইন্টারনেট, এবং সাফারিতে ওয়েবকিট) এবং মোবাইল এবং ডেস্কটপ উভয় প্ল্যাটফর্মে পরীক্ষা করছেন।
  • আপনার সাইট যদি ট্যাবলেট, স্মার্টওয়াচ বা গেমিং কনসোলের মতো কম সাধারণ ডিভাইসেও ব্যবহার করা হতে পারে, তাহলে সেখানেও পরীক্ষা করুন। কিছু হার্ডওয়্যার প্ল্যাটফর্ম ব্রাউজার আপডেটের জন্য মোবাইল এবং ডেস্কটপ থেকে পিছিয়ে থাকতে পারে, যার অর্থ হল কিছু এপিআই সেই প্ল্যাটফর্মের ব্রাউজারগুলিতে অনুপলব্ধ বা অনুপলব্ধ হতে পারে।
  • এক বা একাধিক ব্রাউজার দিয়ে পরীক্ষা করুন যা ব্যবহারকারীর গোপনীয়তাকে প্রেরণা হিসেবে দাবি করে। আপনার সবচেয়ে সাধারণ ব্রাউজারগুলির আসন্ন প্রাক-রিলিজ এবং পরীক্ষা সংস্করণগুলি অন্তর্ভুক্ত করুন যেখানে আপনি পারেন এবং যদি সেগুলি আপনার কাছে উপলব্ধ থাকে: Safari-এর প্রযুক্তি পূর্বরূপ , Chrome-এর Canary , Firefox-এর বিটা চ্যানেল ৷ এগুলি আপনাকে API ব্রেকেজ সনাক্ত করার সর্বোত্তম সুযোগ দেয় এবং সেই পরিবর্তনগুলি আপনার ব্যবহারকারীদের প্রভাবিত করার আগে আপনার সাইটগুলিকে প্রভাবিত করে। একইভাবে, আপনার উপস্থিত যেকোনো বিশ্লেষণের রেফারেন্সের সাথে আপনার ব্যবহারকারীদের পরিবেশের কথা মাথায় রাখুন। যদি আপনার ব্যবহারকারীর সংখ্যায় অনেক বেশি পুরানো অ্যান্ড্রয়েড ফোন থাকে, তাহলে সেগুলিকে আপনার পরীক্ষায় অন্তর্ভুক্ত করতে ভুলবেন না। বেশিরভাগ লোকের কাছে দ্রুত হার্ডওয়্যার এবং সর্বশেষ রিলিজ নেই যা একটি উন্নয়ন দল করে।
  • একটি পরিষ্কার প্রোফাইল এবং ছদ্মবেশী/প্রাইভেট ব্রাউজিং মোডে উভয় ব্যবহার করে পরীক্ষা করুন; সম্ভাবনা হল আপনি ইতিমধ্যে আপনার ব্যক্তিগত প্রোফাইলে প্রয়োজনীয় অনুমতিগুলি মঞ্জুর করেছেন৷ আপনি কোন প্রশ্নের জন্য সাইটের অনুমতি অস্বীকার করলে কি হবে তা পরীক্ষা করুন।
  • ফায়ারফক্সের ফিঙ্গারপ্রিন্টিং সুরক্ষা মোডে স্পষ্টভাবে আপনার পৃষ্ঠাগুলি পরীক্ষা করুন। যদি আপনার পৃষ্ঠা ফিঙ্গারপ্রিন্ট করার চেষ্টা করে তবে তা করার ফলে অনুমতি সংলাপ দেখাবে, বা কিছু API-এর জন্য অস্পষ্ট ডেটা ফিরিয়ে দেবে। এটি আপনাকে নিশ্চিত করতে সহায়তা করে যে আপনার পরিষেবাতে অন্তর্ভুক্ত তৃতীয় পক্ষগুলি ফিঙ্গারপ্রিন্টযোগ্য ডেটা ব্যবহার করছে কিনা বা আপনার নিজস্ব পরিষেবা তার উপর নির্ভর করে কিনা। তারপরে আপনি বিবেচনা করতে পারেন যে ইচ্ছাকৃত ফাজিং আপনার যা প্রয়োজন তা করা আরও কঠিন করে তোলে কিনা। অন্য উৎস থেকে সেই ডেটা পেতে সেই অনুযায়ী সংশোধন করার কথা বিবেচনা করুন, এটি ছাড়াই করুন বা কম দানাদার ডেটা ব্যবহার করুন।
  • পূর্বে তৃতীয় পক্ষের মডিউলে আলোচনা করা হয়েছে, আপনার তৃতীয় পক্ষের নির্ভরতাগুলি তারা আঙ্গুলের ছাপ কৌশল ব্যবহার করছে কিনা তা দেখতে অডিট করাও গুরুত্বপূর্ণ। প্যাসিভ ফিঙ্গারপ্রিন্টিং সনাক্ত করা কঠিন (এবং যদি তৃতীয় পক্ষ তাদের সার্ভারে এটি করে তবে অসম্ভব) কিন্তু ফিঙ্গারপ্রিন্টিং মোড কিছু আঙ্গুলের ছাপ কৌশলগুলিকে ফ্ল্যাগ করতে পারে এবং navigator.userAgent-এর ব্যবহার বা <canvas> অবজেক্টের অপ্রত্যাশিত সৃষ্টির সন্ধান করা কিছু পদ্ধতিও প্রকাশ করতে পারে যা আরও পরীক্ষা-নিরীক্ষার যোগ্য। এটি বিপণনে "সম্ভাব্য ম্যাচিং" শব্দটির ব্যবহার বা তৃতীয় পক্ষের বর্ণনাকারী প্রযুক্তিগত উপাদানগুলির জন্যও সন্ধান করা মূল্যবান; এটি কখনও কখনও ফিঙ্গারপ্রিন্টিং কৌশলগুলির ব্যবহার নির্দেশ করতে পারে।

ক্রস-ব্রাউজার পরীক্ষার সরঞ্জাম

গোপনীয়তার উদ্দেশ্যে আপনার কোড পরীক্ষা করা স্বয়ংক্রিয় করা কঠিন, এবং ম্যানুয়ালি পরীক্ষা করার সময় যে বিষয়গুলি দেখতে হবে তা আগে বর্ণনা করা হয়েছে৷ আপনি যখন সাইটটিতে অ্যাক্সেস করার চেষ্টা করে এমন কোনো API-এর জন্য অনুমতি অস্বীকার করলে কী হবে, উদাহরণস্বরূপ, এবং এটি কীভাবে ব্যবহারকারীর কাছে উপস্থাপন করা হয়? একটি স্বয়ংক্রিয় পরীক্ষা বিচার করতে পারে না যে সাইটটি এমন কাজ করে যাতে ব্যবহারকারীকে এটিকে বিশ্বাস করতে সহায়তা করে, বা বিপরীতভাবে ব্যবহারকারীকে এটিকে অবিশ্বাস করতে উত্সাহিত করতে, বা কিছু লুকানো হচ্ছে বলে মনে হয়।

যাইহোক, একবার সাইটটি নিরীক্ষিত হয়ে গেলে, নতুন ব্রাউজার সংস্করণে (বা আসন্ন "বিটা" এবং "প্রিভিউ" সংস্করণে) কিছুই ভাঙেনি তা নিশ্চিত করার জন্য API-এর পরীক্ষা স্বয়ংক্রিয় হতে পারে, এবং মূলত আপনার বিদ্যমান পরীক্ষার অংশ হিসাবে হওয়া উচিত। সুইট. API সারফেস কভারেজের সাথে কাজ করার সময় আপনার স্বয়ংক্রিয় পরীক্ষার সরঞ্জামগুলির সাথে বিবেচনা করার কিছু বিষয় হল যে বেশিরভাগ ব্রাউজারগুলি কোন API এবং বৈশিষ্ট্যগুলি উপলব্ধ রয়েছে তার উপর কিছু স্তরের নিয়ন্ত্রণের অনুমতি দেয়৷ ক্রোম কমান্ড লাইন সুইচের মাধ্যমে তা করে, যেমন Firefox করে, এবং টেস্টিং টুল সেটআপে এগুলি অ্যাক্সেস করার ফলে আপনি API গুলি বন্ধ বা চালু করে কিছু পরীক্ষা চালানোর অনুমতি দেবে। (উদাহরণস্বরূপ, সাইপ্রেসের ব্রাউজার-লঞ্চ প্লাগইন একটি nd puppeteer's launch.args প্যারামিটার দেখুন, লঞ্চ করার সময় ব্রাউজার ফ্ল্যাগ যুক্ত করার উপায়।)

মোটা তথ্যের জন্য শুধুমাত্র ব্যবহারকারী-এজেন্ট স্ট্রিংয়ের উপর নির্ভর করুন

আরেকটি উদাহরণ গ্রহণ করে, ওয়েবের শুরু থেকে ব্রাউজারগুলি HTTP ব্যবহারকারী-এজেন্ট শিরোনামে প্রতিটি অনুরোধের সাথে তাদের একটি বিবরণ পাঠিয়েছে। প্রায় দীর্ঘ সময় ধরে, লোকেরা ওয়েব ডেভেলপারদের অনুরোধ করে আসছে যে ব্যবহারকারী-এজেন্ট শিরোলেখের বিষয়বস্তু বিভিন্ন ব্রাউজারে বিভিন্ন বিষয়বস্তু পরিবেশন করার জন্য ব্যবহার না করার জন্য, এবং সেই সব সময়ের জন্য ওয়েব ডেভেলপাররা যেভাবেই হোক না কেন, কিছু কিছুতে একটি নির্দিষ্ট পরিমাণ ন্যায্যতা সহ (কিন্তু সব নয়) ক্ষেত্রে। যেহেতু ব্রাউজারগুলি ওয়েবসাইটগুলির দ্বারা একটি সাবঅপ্টিমাল অভিজ্ঞতার জন্য আলাদা হতে চায় না, তাই এর ফলে প্রতিটি ব্রাউজার অন্য ব্রাউজার হওয়ার ভান করে এবং ব্যবহারকারী-এজেন্ট স্ট্রিংটি এরকম কিছু দেখাচ্ছে:

Mozilla/5.0 (Linux; Android 6.0.1; SGP771 Build/32.2.A.0.253; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36

এটি দাবি করে, অন্যান্য জিনিসগুলির মধ্যে, Mozilla/5.0, একটি ব্রাউজার যা একই সময়ে প্রকাশিত হয়েছিল যখন প্রথম মহাকাশচারীরা দুই দশক আগে আন্তর্জাতিক মহাকাশ স্টেশনে চড়েছিলেন। ব্যবহারকারী-এজেন্ট স্ট্রিংটি অবশ্যই আঙ্গুলের ছাপের জন্য এনট্রপির একটি সমৃদ্ধ উৎস, এবং সেই আঙ্গুলের ছাপযোগ্যতা হ্রাস করার জন্য, ব্রাউজার নির্মাতারা ইতিমধ্যেই ব্যবহারকারী-এজেন্ট শিরোনামটি হিমায়িত করেছে বা এটি করার দিকে কাজ করছে। এটি একটি API সম্পূর্ণরূপে API অপসারণ না করেই সরবরাহ করে এমন ডেটা পরিবর্তন করার আরেকটি উদাহরণ। একটি ফাঁকা ব্যবহারকারী-এজেন্ট শিরোনাম পাঠানো অগণিত ওয়েবসাইট ভাঙ্গবে যা অনুমান করে যে এটি উপস্থিত রয়েছে। সুতরাং সাধারণভাবে, ব্রাউজারগুলি যা করছে তা হল এটি থেকে কিছু বিশদ অপসারণ করা এবং তারপর থেকে এটিকে বেশিরভাগই অপরিবর্তিত রাখা। (আপনি সাফারি , ক্রোম এবং ফায়ারফক্সে এটি ঘটতে দেখতে পাচ্ছেন।) বিশদ আঙ্গুলের ছাপের বিরুদ্ধে এই সুরক্ষার অর্থ হল যে আপনি ব্যবহারকারী-এজেন্ট শিরোনামটি আর নির্ভুল হওয়ার উপর নির্ভর করতে পারবেন না, এবং যদি আপনি তা করেন তবে বিকল্প ডেটা উত্সগুলি সন্ধান করা গুরুত্বপূর্ণ। .

স্পষ্ট করে বলতে গেলে, ব্যবহারকারী-এজেন্টের ডেটা সম্পূর্ণভাবে চলে যাচ্ছে না, তবে এটি একটি কম গ্রানুলিটিতে পাওয়া যায়, বা কখনও কখনও ভুল হয় কারণ একটি পুরানো কিন্তু অপরিবর্তিত সংখ্যা রিপোর্ট করা হতে পারে। উদাহরণ স্বরূপ, ফায়ারফক্স, সাফারি এবং ক্রোম সকলেই রিপোর্ট করা ম্যাকওএস সংস্করণ সংখ্যাকে দশে সীমাবদ্ধ করে (আরও আলোচনার জন্য এখানে ব্যবহারকারী-এজেন্ট স্ট্রিং হ্রাসের আপডেট দেখুন)। ব্যবহারকারী-এজেন্ট স্ট্রিং-এ ক্রোম কীভাবে ডেটা কমানোর পরিকল্পনা করছে তার সঠিক বিবরণ ইউজার-এজেন্ট রিডাকশন -এ পাওয়া যায় কিন্তু, সংক্ষেপে, আপনি আশা করতে পারেন যে রিপোর্ট করা ব্রাউজার সংস্করণ নম্বরে শুধুমাত্র একটি বড় সংস্করণ থাকবে (তাই সংস্করণ নম্বরটি দেখতে পাবে 123.0.0.0 এর মতো, ব্রাউজারটি 123.10.45.108 সংস্করণ হলেও, এবং OS সংস্করণটি বিশদ বিবরণ ছাড়াই থাকবে এবং অল্প সংখ্যক অপরিবর্তিত পছন্দগুলির একটিতে স্থির হয়ে যাবে৷ সুতরাং একটি কাল্পনিক "Windows 20" এ চলমান একটি কাল্পনিক ক্রোম সংস্করণ 123.45.67.89 এর সংস্করণ নম্বর হিসাবে রিপোর্ট করবে:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36

আপনার প্রয়োজনীয় মূল তথ্য (ব্রাউজার সংস্করণ) এখনও উপলব্ধ: এটি উইন্ডোজে Chrome 123। কিন্তু সাবসিডিয়ারি তথ্য (চিপ আর্কিটেকচার, কোন উইন্ডোজ ভার্সন, সাফারির কোন ভার্সন এটি অনুকরণ করছে, ব্রাউজার মাইনর ভার্সন) ফ্রিজের পরে আর পাওয়া যাবে না।

এটি একটি ভিন্ন প্ল্যাটফর্মে একটি "বর্তমান" Chrome ব্যবহারকারী-এজেন্টের সাথে তুলনা করুন:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36 ,

এবং এটি দেখা যায় যে একমাত্র জিনিস যা ভিন্ন তা হল Chrome সংস্করণ নম্বর (104) এবং প্ল্যাটফর্ম শনাক্তকারী৷

একইভাবে, সাফারির ব্যবহারকারী-এজেন্ট স্ট্রিং একটি প্ল্যাটফর্ম এবং একটি সাফারি সংস্করণ নম্বর দেখায় এবং iOS এ একটি ওএস সংস্করণও দেয়, তবে বাকি সব হিমায়িত। সুতরাং একটি কাল্পনিক ম্যাকওএস 20 এ চলমান একটি কাল্পনিক Safari সংস্করণ 1234.5.67 এর ব্যবহারকারী-এজেন্টকে এইভাবে দিতে পারে:

Mozilla/5.0 (Macintosh; **Intel Mac OS X 10_20_0**) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15 ,

এবং একটি কাল্পনিক iOS 20 এ এটি হতে পারে:

Mozilla/5.0 (iPhone; CPU **iPhone OS 20_0** like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/**20.0 Mobile/15E148 Safari/605.1.15**

আবার, মূল তথ্য (এটি Safari, এটি iOS বা macOS-এ) উপলব্ধ, এবং iOS Safari এখনও একটি iOS সংস্করণ নম্বর প্রদান করে; কিন্তু অতীতে যে আনুষঙ্গিক তথ্য পাওয়া যেত তার বেশির ভাগই হিমায়িত হয়ে গেছে। গুরুত্বপূর্ণভাবে, এর মধ্যে Safari সংস্করণ নম্বর রয়েছে, যা অগত্যা উপলব্ধ নয়৷

রিপোর্ট করা ব্যবহারকারী-এজেন্টের পরিবর্তনগুলি নিয়ে বেশ বিতর্ক হয়েছিল৷ https://github.com/WICG/ua-client-hints#use-cases সারসংক্ষেপ কিছু যুক্তি এবং পরিবর্তনের কারণগুলিকে সংক্ষিপ্ত করে, এবং Rowan Merewood-এর কাছে ব্যবহারকারী-এজেন্ট ব্যবহার করা থেকে দূরে সরে যাওয়ার জন্য কিছু কৌশল সহ একটি স্লাইড ডেক রয়েছে পার্থক্যের জন্য, UA ক্লায়েন্ট ইঙ্গিত প্রস্তাবের প্রসঙ্গে আরও ব্যাখ্যা করা হয়েছে।

ফাজিং

ফাজিং হল নিরাপত্তা অনুশীলনের একটি শব্দ, যেখানে API গুলিকে অপ্রত্যাশিত মানগুলির সাথে ডাকা হয় এই আশায় যে তারা সেই অপ্রত্যাশিত মানগুলিকে খারাপভাবে পরিচালনা করে এবং একটি সুরক্ষা সমস্যা প্রকাশ করে। ওয়েব ডেভেলপারদের ক্রস-সাইট স্ক্রিপ্টিং (XSS) এর সাথে পরিচিত হওয়া উচিত, যার মধ্যে একটি পৃষ্ঠায় দূষিত স্ক্রিপ্ট যোগ করা জড়িত, কারণ প্রায়শই পৃষ্ঠাটি ইনজেকশন করা HTML থেকে সঠিকভাবে এড়িয়ে যায় না (তাই আপনি এটিতে <script> পাঠ্য সহ একটি অনুসন্ধান ক্যোয়ারী করেন) . ব্যাক-এন্ড ডেভেলপাররা এসকিউএল ইনজেকশন সম্পর্কে সচেতন থাকবেন, যেখানে ডাটাবেস কোয়েরি যা সঠিকভাবে ব্যবহারকারীর ইনপুট যাচাই করে না নিরাপত্তা সমস্যাগুলি প্রকাশ করে (যেমনটি লিটল ববি টেবিলের সাথে xkcd দ্বারা বিশেষভাবে চিত্রিত)। ফাজিং, বা ফাজ টেস্টিং , একটি API-তে অনেকগুলি ভিন্ন ভিন্ন অবৈধ বা অপ্রত্যাশিত ইনপুট প্রদান করার জন্য এবং সুরক্ষা ফাঁস, ক্র্যাশ বা অন্যান্য খারাপ পরিচালনার জন্য ফলাফলগুলি পরীক্ষা করার জন্য স্বয়ংক্রিয় প্রচেষ্টার জন্য আরও সঠিকভাবে ব্যবহৃত হয়। এই সব ইচ্ছাকৃতভাবে ভুল তথ্য প্রদানের উদাহরণ. এখানে, যদিও, এটি ব্রাউজারদের দ্বারা পূর্বনির্ধারিতভাবে করা হচ্ছে (ইউজার-এজেন্টকে ইচ্ছাকৃতভাবে ভুল করে), ডেভেলপারদের সেই ডেটার উপর নির্ভর করা বন্ধ করতে উত্সাহিত করতে।

করবেন

  • ব্যবহারকারী-এজেন্ট স্ট্রিং-এর উপর কোন নির্ভরতার জন্য আপনার কোডবেস পরীক্ষা করুন ( navigator.userAgent এর জন্য একটি অনুসন্ধান সম্ভবত আপনার ক্লায়েন্ট-সাইড কোডে বেশিরভাগ ঘটনা খুঁজে পাবে এবং আপনার ব্যাকএন্ড কোড সম্ভবত একটি শিরোনাম হিসাবে User-Agent খুঁজবে), সহ আপনার নির্ভরতা।
  • আপনি যদি আপনার নিজের কোডে ব্যবহার খুঁজে পান, তাহলে কোডটি কী পরীক্ষা করছে তা খুঁজে বের করুন এবং সেই পার্থক্যটি করার অন্য উপায় খুঁজুন (বা প্রতিস্থাপন নির্ভরতা খুঁজুন, অথবা সমস্যাগুলি ফাইল করে বা আপডেটের জন্য তাদের সাথে চেক করে নির্ভরতা আপস্ট্রিমের সাথে কাজ করুন)। কখনও কখনও বাগগুলির আশেপাশে কাজ করার জন্য ব্রাউজার ডিফারেন্সিয়েশন প্রয়োজন হয়, তবে ব্যবহারকারী-এজেন্ট ক্রমবর্ধমানভাবে এটি হিমায়িত হয়ে গেলে এটি করার উপায় হয়ে উঠবে না৷
  • আপনি নিরাপদ হতে পারে. আপনি যদি শুধুমাত্র ব্র্যান্ড, প্রধান সংস্করণ এবং প্ল্যাটফর্মের মূল মানগুলি ব্যবহার করেন, তাহলে এইগুলি প্রায় নিশ্চিতভাবে এখনও উপলব্ধ থাকবে এবং ব্যবহারকারী-এজেন্ট স্ট্রিংয়ে সঠিক হবে৷
  • MDN ব্যবহারকারী-এজেন্ট স্ট্রিং ("ব্রাউজার স্নিফিং") এর উপর নির্ভরতা এড়াতে ভাল উপায় বর্ণনা করে, যার মধ্যে প্রধান হল বৈশিষ্ট্য সনাক্তকরণ।
  • আপনি যদি কোনোভাবে ইউজার-এজেন্ট স্ট্রিং-এর উপর নির্ভরশীল হন (এমনকি কিছু মূল মান ব্যবহার করার সময়ও যেগুলি উপযোগী থাকে), নতুন ব্রাউজার রিলিজে আসন্ন ব্যবহারকারী-এজেন্টদের সাথে পরীক্ষা করা একটি ভাল ধারণা। বিটা বা টেকনোলজি প্রিভিউ বিল্ডের মাধ্যমে সেই আসন্ন ব্রাউজার সংস্করণগুলির সাথে পরীক্ষা করা সম্ভব, তবে পরীক্ষার জন্য একটি কাস্টম ব্যবহারকারী-এজেন্ট স্ট্রিং সেট করাও সম্ভব। আপনি ব্যবহারকারী-এজেন্ট স্ট্রিংকে ওভাররাইড করতে পারেন Chrome, Edge , Firefox , এবং Safari , স্থানীয় উন্নয়ন করার সময়, আপনার কোড কীভাবে ব্যবহারকারীদের কাছ থেকে আপনি পেতে পারেন এমন বিভিন্ন ব্যবহারকারী-এজেন্ট মানগুলির সাথে ডিল করে তা পরীক্ষা করতে পারেন৷

ক্লায়েন্ট ইঙ্গিত

এই তথ্য প্রদানের একটি প্রধান প্রস্তাব হল ব্যবহারকারী-এজেন্ট ক্লায়েন্ট ইঙ্গিত , যদিও এটি সমস্ত ব্রাউজারে সমর্থিত নয়৷ সমর্থনকারী ব্রাউজার তিনটি হেডার পাস করবে: Sec-CH-UA , যা একটি ব্রাউজার ব্র্যান্ড এবং সংস্করণ নম্বর দেয়; Sec-CH-UA-Mobile , যা নির্দেশ করে যদি অনুরোধটি একটি মোবাইল ডিভাইস থেকে আসে; এবং Sec-CH-UA-Platform , যা অপারেটিং সিস্টেমের নাম দেয়। (এই শিরোলেখগুলিকে পার্স করা যতটা সহজ মনে হয় তার চেয়ে কম সহজ কারণ এগুলি সাধারণ স্ট্রিংগুলির চেয়ে স্ট্রাকচার্ড হেডার , এবং এটি ব্রাউজারগুলি "কঠিন" মান প্রেরণ করে, যা সঠিকভাবে পার্স না করলে ভুলভাবে পরিচালনা করা হবে৷ এটি আগের মতো, একটি উদাহরণ "ফাজ টেস্টিং" ব্রাউজার দ্বারা পূর্বনির্ধারিতভাবে করা হচ্ছে, এই ডেটা ব্যবহার করে একজন ডেভেলপারকে সঠিকভাবে পরিচালনা করতে হবে কারণ ডেটা এমনভাবে ডিজাইন করা হয়েছে যাতে অনুপযুক্ত বা অলস পার্সিং সম্ভবত খারাপ ফলাফল দেয়, যেমন বিদ্যমান নেই এমন ব্র্যান্ড দেখানো, বা স্ট্রিং যা সঠিকভাবে বন্ধ হয় না।) সৌভাগ্যবশত, এই ডেটা ব্রাউজার দ্বারা সরাসরি জাভাস্ক্রিপ্টে navigator.userAgentData হিসাবে উপলব্ধ করা হয়েছে, যা একটি সমর্থনকারী ব্রাউজারে এই বস্তুর মতো দেখতে হতে পারে:

{
  "brands": [
    {
    "brand": " Not A;Brand",
    "version": "99"
    },
    {
    "brand": "Chromium",
    "version": "96"
    },
    {
    "brand": "Google Chrome",
    "version": "96"
    }
  ],
  "mobile": false
}