আপনার ফাইল আপলোড হচ্ছে না, তা কীভাবে যাচাই করবেন
এই সাইটগুলোর প্রত্যেকটাই বলে তারা প্রাইভেট। আমি আসলে সেটা যাচাই করব কীভাবে?
সঠিক ধারণা থেকে শুরু করুন
মার্কেটিং পেজে লেখা প্রাইভেসির দাবি কোনো প্রমাণ নয়। তালার আইকন, ব্যাজ বা প্রাইভেসি পলিসির একটা বাক্যও নয় — এগুলো উদ্দেশ্যের বর্ণনা, আর আপনি জানতে চান আচরণ। সৌভাগ্যক্রমে আচরণ চোখে দেখা যায়: প্রতিটি ব্রাউজারেই এমন টুল থাকে যা দেখিয়ে দেয় একটা পেজ ঠিক কী পাঠাচ্ছে, আর সেগুলো পড়তে ডেভেলপার হওয়ার দরকার নেই।
এই পরীক্ষাগুলো এই সাইটে চালান। আগে যে সাইট ব্যবহার করতেন সেখানেও চালান। উদ্দেশ্য অন্য কোনো দাবিতে বিশ্বাস করা নয়; উদ্দেশ্য হলো কোনো দাবিতে বিশ্বাস করার দরকারটাই ফুরিয়ে ফেলা।
পরীক্ষা এক: নেটওয়ার্ক প্যানেলে নজর রাখুন
- ডেভেলপার টুল খুলুন। বেশিরভাগ ডেস্কটপ ব্রাউজারে সেটা F12, বা Ctrl+Shift+I, বা Cmd+Option+I।
- Network ট্যাব বেছে নিন আর নিশ্চিত করুন রেকর্ডিং চালু আছে।
- পেজটা রিলোড করুন, তারপর তালিকাটা মুছে দিন যাতে খালি লগ থেকে শুরু করতে পারেন।
- আপনার ফাইল বেছে নিন আর কাজটা চালান।
- সাইজ অনুযায়ী সাজান, বা Method কলামে POST আর PUT রিকোয়েস্ট খুঁজে দেখুন।
আপনি খুঁজছেন এমন যেকোনো রিকোয়েস্ট যার পেলোড আপনার ফাইলের সাইজের কাছাকাছি, আর আপনি যে সাইটে আছেন তার বাইরের কোনো হোস্টে যাওয়া যেকোনো রিকোয়েস্ট। লোকাল টুল নিজের কোডের জন্য কিছু রিকোয়েস্ট দেখাবে — স্ক্রিপ্ট, স্টাইলশিট, WebAssembly মডিউল, হয়তো একটা মডেল ফাইল — আর তারপর কাজ চলার সময় কিছুই দেখাবে না। আপলোডার আপনার বোতাম চাপার মুহূর্তেই কয়েক মেগাবাইট বয়ে নিয়ে যাওয়া একটা রিকোয়েস্ট দেখাবে।
পরীক্ষা দুই: নেটওয়ার্কটাই সরিয়ে দিন
সবচেয়ে শক্তিশালী পরীক্ষা এটাই, আর এতে কোনো বিশেষ দক্ষতাই লাগে না। স্বাভাবিকভাবে পেজটা লোড করুন, একবার টুলটা ব্যবহার করুন যাতে দরকারি ইঞ্জিন ক্যাশ হয়ে যায়, তারপর সংযোগ বিচ্ছিন্ন করুন: এয়ারপ্লেন মোড চালু করুন, Wi-Fi বন্ধ করুন, বা ডেভেলপার টুলের অফলাইন টগলটা ব্যবহার করুন। এবার একটা ফাইল প্রসেস করুন।
কাজটা যদি শেষ হয়, তাহলে প্রসেসিংটা আপনার মেশিন ছাড়া আর কোথাও হতেই পারে না। এ নিয়ে তর্ক করার মতো কোনো অস্পষ্টতা নেই। আর যদি ব্যর্থ হয় বা আটকে যায়, তাহলে পাইপলাইনের কোনো একটা অংশের সার্ভার লেগেছে — যেটা বৈধও হতে পারে, যেমন এখনও ক্যাশ না হওয়া কোনো মডেল ফাইল, কিন্তু এখন আপনি জানেন কোনটা, সেটা জিজ্ঞেস করতে হবে।
পরীক্ষা তিন: কনটেন্ট সিকিউরিটি পলিসি পড়ুন
কনটেন্ট সিকিউরিটি পলিসি হলো একটা হেডার, যা সাইট পাঠায় আর ব্রাউজার বলবৎ করে। এর connect-src ডিরেক্টিভে তালিকাভুক্ত থাকে পেজটা কোন কোন গন্তব্যে সংযোগ খুলতে পারবে। connect-src যদি সাইটের নিজস্ব অরিজিনেই সীমাবদ্ধ থাকে, তাহলে পেজের কোড যা-ই করার চেষ্টা করুক, ব্রাউজার নিজেই অন্য কোথাও কিছু পাঠানোর চেষ্টা আটকে দেবে।
এটা পড়তে হলে Network ট্যাব খুলুন, ডকুমেন্ট রিকোয়েস্টে ক্লিক করুন — সাধারণত প্রথম সারিটাই — আর রেসপন্স হেডারে Content-Security-Policy খুঁজুন। বাইরের কোনো হোস্ট ছাড়া connect-src 'self' আছে এমন পলিসি অর্থবহ, ব্রাউজার-বলবৎ একটা সীমা — কোনো প্রতিশ্রুতি নয়।
কোন পরীক্ষা কী প্রমাণ করে
| পরীক্ষা | কী প্রমাণ করে | কী ধরে না |
|---|---|---|
| নেটওয়ার্ক প্যানেল | এই সেশনে এই পেজ কী পাঠিয়েছে | অন্য কোনো কোড পথ, সাইটের পরবর্তী কোনো সংস্করণ, বা আপনি নজর রাখা বন্ধ করার পর পাঠানো কোনো রিকোয়েস্ট |
| অফলাইন পরীক্ষা | প্রসেসিংটা নিজে লোকালি চলে | কিছু সারিতে রেখে আবার সংযুক্ত হওয়ার পর পাঠানো হয় কি না |
| কনটেন্ট সিকিউরিটি পলিসি | ব্রাউজার আদৌ কোথায় কোথায় সংযোগের অনুমতি দেবে | পলিসি যা যা অনুমোদন করে তার সবই, সাইটের নিজের অরিজিন সহ |
| সোর্স কোড পড়া | পাঠানো কোডে কী আছে | পরিশ্রম; আর সাইট বদলালে বারবার করতে হয় |
একসঙ্গে এগুলো শক্তিশালী। আলাদা করে প্রতিটিরই একটা ফাঁক আছে, আর কেউ যদি বলে একটামাত্র পরীক্ষাতেই প্রশ্নটা মিটে যায়, সে ব্যাপারটাকে বড্ড সহজ করে দেখাচ্ছে।
টুলটা লোকাল নয় — যেসব লক্ষণে বোঝা যায়
- এমন একটা প্রোগ্রেস বার যা আপনার ডিভাইসের সঙ্গে সম্পর্কহীন গতিতে এগোয় — দ্রুতগতির ল্যাপটপ আর পুরোনো ফোনে একই রকম মসৃণ।
- ফলাফল আপনার ব্রাউজারের হাতে আগে থেকেই থাকা একটা ফাইল হিসেবে নয়, বরং তাদের ডোমেইনের কোনো ডাউনলোড URL-এর লিংক হিসেবে আসা।
- কয়েক ঘণ্টা পর তাদের সার্ভার থেকে ফাইল মুছে ফেলা হবে — এমন কোনো বার্তা। ওই বাক্যটাই স্বীকারোক্তি যে ফাইলগুলো ওখানে ছিল।
- কোনো সারি বা রেট লিমিট। আপনার নিজের প্রসেসরে অন্য মানুষের সঙ্গে ভাগ করা কোনো সারি থাকে না।
- নেটওয়ার্ক বিচ্ছিন্ন অবস্থায় টুলটা কেবল প্রথম ছোট ফাইলটার জন্যই কাজ করে, তারপর থেমে যায়।
যাচাইয়ের সীমা
যাচাই আপনাকে বলে দেয় যেদিন পরীক্ষা করেছেন সেদিনের, আর যে সংস্করণটা পরীক্ষা করেছেন তার কথা। সাইট আগামীকালই বদলে যেতে পারে। এ কারণেই সবচেয়ে জরুরি পরীক্ষাগুলো হলো কাঠামোগত পরীক্ষা: কড়া একটা কনটেন্ট সিকিউরিটি পলিসি আর কাজ করা একটা অফলাইন পরীক্ষা — এগুলো অ্যাপ্লিকেশনটা কীভাবে বানানো তার বৈশিষ্ট্য, কোনো নির্দিষ্ট রিলিজ নিয়ে দেওয়া প্রতিশ্রুতি নয়।
এই তালিকার প্রতিটি পরীক্ষার বাইরে থেকে যায় দুটো জিনিস। ব্রাউজার এক্সটেনশন যেকোনো পেজের কনটেন্ট পড়তে পারে, আপনি তাতে যে ফাইল লোড করেছেন সেটাও — আর কোনো সাইটই তা ঠেকাতে পারে না। আপনার অপারেটিং সিস্টেম আপনার খোলা প্রতিটি ফাইল দেখতে পায়। কোনো ডকুমেন্ট যদি এতটাই স্পর্শকাতর হয় যে এসব গুরুত্বপূর্ণ, তাহলে সেটা আপনার নিয়ন্ত্রণে থাকা কোনো মেশিনের অফলাইন সফটওয়্যারে প্রসেস করুন, আর যেকোনো ওয়েবসাইটকে — এটাসহ — ওই কাজের জন্য ভুল টুল বলেই ধরে নিন।
এই কাজের টুল
সূত্র
- W3C — Content Security Policy Level 3
- MDN — Content-Security-Policy connect-src
- Chrome DevTools — inspect network activity
- MDN — Firefox Network Monitor