মূল অংশে যান

RentnRide কীভাবে সুরক্ষিত

এক ভাড়া প্রতিষ্ঠানের তথ্য অন্যটির থেকে আলাদা রাখতে, আর একটি স্টাফ অ্যাকাউন্ট যাতে অন্য কেউ হয়ে না যায় — এই প্ল্যাটফর্ম বাস্তবে কী কী প্রয়োগ করে। কোড থেকে লেখা, আর কোড যেখানে নীরব সেখানে ইচ্ছাকৃতভাবেই নীরব।

কার্যকর
সর্বশেষ হালনাগাদ

অনুচ্ছেদ ১এক প্রতিষ্ঠান অন্য প্রতিষ্ঠানের তথ্য দেখতে পারে না

বাকি সবকিছু এই নিশ্চয়তার উপর দাঁড়িয়ে, আর এটি ভাঙলেই সবচেয়ে বড় ক্ষতি — তাই একবার বিশ্বাস করে না নিয়ে এটি তিন জায়গায় প্রয়োগ করা হয়।

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

অনুচ্ছেদ ২স্টাফের লগইন

মালিকের যুক্ত করা ডিভাইসে ফোন নম্বর ও পিন দিয়ে স্টাফ লগইন করেন। পিন ছোট গোপন সংখ্যা, তাই নকশাটি ধরেই নেয় যে তা অনুমান করা যায়, এবং অনুমানটিকে অকেজো করে দেয়।

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

অনুচ্ছেদ ৩আপলোড করা ছবি ও কাগজপত্র

হ্যান্ডওভারের ছবি, ক্ষতির ছবি ও গাড়ির কাগজ অবজেক্ট স্টোরেজে ফাইল হিসেবে রাখা হয়। ঢোকার পথে চারটি বিষয় প্রয়োগ করা হয়।

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

অনুচ্ছেদ ৪অডিট লগ

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

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

অনুচ্ছেদ ৫ব্যর্থতা, এবং ব্যর্থতা কতটুকু প্রকাশ করতে পারে

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

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

অনুচ্ছেদ ৬বিশেষ করে এই ওয়েবসাইট

আপনি যে সাইটটি পড়ছেন তার সঙ্গে কোনো ডেটাবেজ, স্টোরেজ, কি-ভ্যালু স্টোর বা কোনো ধরনের গোপন চাবি যুক্ত নেই। এটি ভাড়াটে প্রতিষ্ঠানের তথ্যে পৌঁছাতেই পারে না, তাই এর কোনো ত্রুটি সেই তথ্য ফাঁস করতেও পারে না — আলাদা রাখার সবচেয়ে শক্ত রূপ হলো আলাদা রাখার মতো কিছু না থাকা।

এটি কিছু সংগ্রহও করে না। কোনো পাতায় ফর্ম নেই, জমা নেয় এমন কোনো ঠিকানা নেই, আর এর কনটেন্ট সিকিউরিটি নীতি ব্রাউজারকে ফর্ম জমা দিতেই দেয় না — তিনটি আলাদা স্তর, যাতে একটি ভুল চুপচাপ কোনো জমা নেওয়ার পথ তৈরি করে না ফেলে। এটি যা কিছু লোড করে তার সবই কেবল এই সাইট থেকেই।

অনুচ্ছেদ ৭কিছু খুঁজে পেলে জানানো

কোনো সমস্যা খুঁজে পেলে অন্য কাউকে বলার আগে আমাদের বলুন; দেখেছেন বলে আমরা আপনার বিরুদ্ধে কোনো আইনি ব্যবস্থা নেব না, যদি সেটি দেখানোর জন্য যতটুকু দরকার তার বেশি কারও তথ্যে হাত না দিয়ে থাকেন, না বদলে থাকেন, না রেখে দিয়ে থাকেন।

নিচে নিরাপত্তার ঠিকানা প্রকাশিত থাকলে সেখানে পাঠান। যোগাযোগের ঠিকানা নির্ধারিত থাকলে এই সাইট প্রচলিত well-known ঠিকানায় যন্ত্রপাঠ্য একটি যোগাযোগ ফাইলও রাখে। আমরা তিন কর্মদিবসের মধ্যে প্রাপ্তি জানাই, কী পেলাম তা বলি, এবং ঠিক হয়ে গেলে আপনি চাইলে আপনার নাম উল্লেখ করতে পেরে খুশি হই। কোনো অর্থ পুরস্কারের কর্মসূচি নেই, আর কাজটি করার পর আপনাকে তা জানতে দেওয়ার চেয়ে আগেই বলে দেওয়া ন্যায্য।

অনুচ্ছেদ ৮এই পাতা যা দাবি করে না

এই প্ল্যাটফর্মে বাইরের কোনো নিরাপত্তা নিরীক্ষা বা অনুপ্রবেশ পরীক্ষা করা হয়নি, এবং এর কোনো নিরাপত্তা সনদও নেই। এমন পাতায় উল্টোটা লেখা খুব প্রচলিত এবং তা যাচাই করা যায়, আর সে কারণেই এখানে তা লেখা হয়নি।

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

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

এই নথি সম্পর্কে

এই পাতার প্রতিটি ব্যবস্থা বর্ণনা করার আগে সোর্স কোড থেকে পড়া হয়েছে, আর বাস্তবায়ন যেখানে পরিকল্পিত নকশার চেয়ে পিছিয়ে সেই একটি জায়গা বাদ না দিয়ে ৩ নম্বর অনুচ্ছেদে লিখে দেওয়া হয়েছে। বাইরের কোনো নিরাপত্তা মূল্যায়নকারী বা বাংলাদেশে যোগ্য কোনো আইনজীবী এই পাতা দেখেননি।

উপরে ফিরুন
RentnRide কীভাবে সুরক্ষিত · RentnRide