আমি আমার সাইড প্রজেক্টগুলোর নিরাপত্তা অডিট করেছি — যা খুঁজে পেয়েছি তা এখানে দেওয়া হলো

আমি সম্প্রতি আমার সব সাইড প্রজেক্ট অডিট করেছি। আমি আমার FastAPI ব্যাকএন্ড, Telegram বট এবং ওয়েব অ্যাপগুলো পরীক্ষা করেছি। আমি ভেবেছিলাম আমি সতর্ক ছিলাম।

আমি ভুল ছিলাম।

আমি এমন কিছু বাস্তব বাগ (bug) খুঁজে পেয়েছি যা আমি আসলে প্রোডাকশনে পাঠিয়ে দিয়েছিলাম। এগুলো কোনো তাত্ত্বিক সমস্যা নয়। এগুলো হলো দ্রুত কাজ করার চেষ্টায় আমার করা ভুল।

নিচে আমি যে প্রধান সমস্যাগুলো পেয়েছি এবং সেগুলো কীভাবে সমাধান করবেন তা দেওয়া হলো:

  1. কন্ডিশনাল অথেন্টিকেশন (Conditional Authentication) আমি এমন কোড লিখেছিলাম যা শুধুমাত্র একটি সিক্রেট (secret) থাকলে API কী (key) চেক করত। যদি আমি আমার এনভায়রনমেন্টে সিক্রেটটি সেট করতে ভুলে যেতাম, তবে চেকটি পুরোপুরি বাদ পড়ে যেত। এর ফলে আমার API সবার জন্য উন্মুক্ত হয়ে যেত।
  1. Git হিস্ট্রিতে কী (key) লিক হওয়া আমি আমার Git হিস্ট্রিতে পুরনো API কী খুঁজে পেয়েছি। আমি পরে সেগুলো .env ফাইলে সরিয়ে নিয়েছিলাম, কিন্তু Git আপনার কোডের প্রতিটি পুরনো ভার্সন চিরকাল সংরক্ষণ করে রাখে।
  1. অবশিষ্টাংশ ডিবাগ এন্ডপয়েন্ট (Leftover Debug Endpoints) আমি প্রোডাকশনে এমন কিছু এন্ডপয়েন্ট রেখে দিয়েছিলাম যা আমার ডাটাবেস কনফিগারেশন এবং সিস্টেম সেটিংস প্রদর্শন করত। এগুলো ডেভেলপমেন্টের সময় কাজের হলেও লাইভ বা প্রোডাকশনে অত্যন্ত বিপজ্জনক।
  1. অতিরিক্ত তথ্যসমৃদ্ধ এরর মেসেজ (Verbose Error Messages) আমি ব্যবহারকারীকে সরাসরি সিস্টেম এরর (raw system errors) দেখাচ্ছিলাম। এই এররগুলো আপনার ফাইল পাথ, ডাটাবেস টাইপ এবং লাইব্রেরি ভার্সন প্রকাশ করে দেয়। একজন আক্রমণকারী আপনার সিস্টেমকে টার্গেট করতে এই তথ্য ব্যবহার করতে পারে।
  1. innerHTML-এর মাধ্যমে XSS আমি আমার ফ্রন্টএন্ডে ইউজার ডেটা রেন্ডার করতে innerHTML ব্যবহার করেছিলাম। এটি আক্রমণকারীদের আপনার সাইটে স্ক্রিপ্ট ইনজেক্ট করার সুযোগ দেয়।
  1. রেট লিমিটিং-এর অভাব (Lack of Rate Limiting) আমার এমন কিছু এন্ডপয়েন্ট ছিল যা কোনো সীমা ছাড়াই দামী AI মডেল কল করত। একজন ব্যবহারকারী কয়েক মিনিটের মধ্যেই বিশাল বিল তৈরি করে ফেলতে পারত।
  1. শিথিল CORS সেটিংস (Permissive CORS Settings) আমি আমার মিডলওয়্যারে allow_origins=["*"] ব্যবহার করেছিলাম। এটি যেকোনো ওয়েবসাইটকে আপনার API-তে রিকোয়েস্ট পাঠানোর অনুমতি দেয়।

৮. ফাইল লিকেজ আমি এমন কোড লিখেছিলাম যা অস্থায়ী ফাইল তৈরি করত কিন্তু প্রসেস ক্র্যাশ করলে সেগুলো মুছে ফেলতে ব্যর্থ হতো। এই ফাইলগুলো আপনার সার্ভারে চিরকাল থেকে যায়।

নিরাপত্তা সংক্রান্ত সমস্যাগুলো খুব কমই ইচ্ছাকৃত হয়। এগুলো মূলত "আমি এটি পরে ঠিক করে দেব" বলার পরিণাম। সেই "পরে" আর কখনোই আসে না।

প্রথম দিন থেকেই আপনার কাজের প্রক্রিয়ায় (workflow) নিরাপত্তাকে অন্তর্ভুক্ত করুন। কোড commit করার আগে এবং deploy করার আগে তা পরীক্ষা করে নিন।

উৎস: https://dev.to/justjinoit/i-audited-my-own-side-projects-for-security-issues-heres-what-i-found-1ahb