একটা খুব পরিচিত দৃশ্য। এক ক্লায়েন্ট ThemeForest বা CodeCanyon থেকে ৫৯ ডলারের একটা স্ক্রিপ্ট কিনলেন, হিসেব করে দেখলেন সাত হাজার টাকায় পুরো একটা সিস্টেম — সস্তাই তো। তিন মাস পর সেই সিস্টেম ঠিক করতে ডেভেলপারকে দিতে হচ্ছে সত্তর হাজার। কোড খুলে দেখা যায়, ডেটাবেজের পাসওয়ার্ড ফাইলের ভেতরে লেখা, ইউজারের ইনপুট সরাসরি কোয়েরিতে যাচ্ছে, আর আপডেট দিলে সব কাস্টমাইজেশন মুছে যায়।
সমস্যাটা এই না যে রেডিমেড কোড কেনা খারাপ। আমরা নিজেরাই টেমপ্লেট বিক্রি করি, আর ঠিকঠাক কোড কিনলে সেটা কয়েক মাসের ডেভেলপমেন্ট সময় বাঁচিয়ে দেয়। সমস্যা হলো, কেনার সময় আমরা যা দেখি তা কোড নয় — স্ক্রিনশট। নিচে ছয়টা ভুল ধারণা, যেগুলোর কারণে ভালো টাকা খারাপ কোডে ঢুকে যায়, আর প্রতিটার পাশে কেনার আগে কী দেখতে হবে সেটাও।
‘৫ স্টার রেটিং আর ১২ হাজার সেল আছে, কোড নিশ্চয়ই ভালো’
রেটিং দেন কারা? যাঁরা কিনে ডেমো ইমপোর্ট করেছেন, সুন্দর দেখেছেন, আর সাপোর্ট টিকিটের দ্রুত উত্তর পেয়েছেন। এঁদের প্রায় কেউই কোড খুলে দেখেননি। তাই রেটিং আসলে ডিজাইন আর সাপোর্টের স্কোর, কোডের নয়। মার্কেটপ্লেসের রিভিউ টিম গাইডলাইন মানা হয়েছে কি না দেখে, কিন্তু সেটা কোনো পূর্ণাঙ্গ সিকিউরিটি অডিট নয় — তারা সেই দাবিও করে না।
রেটিংয়ের বদলে চেঞ্জলগ পড়ুন। শেষ আপডেট কবে হয়েছে? গত ছয় মাসে কোনো আপডেট না থাকলে প্রোডাক্টটাকে পরিত্যক্ত ধরে নিন। আর চেঞ্জলগে যদি শুধু নতুন ডেমো যোগ করা হয়েছে জাতীয় লাইন থাকে, কখনও PHP 8.2 সাপোর্ট বা সিকিউরিটি ফিক্স জাতীয় কিছু না থাকে, সেটাও একটা সংকেত — লেখক নতুন ফিচার বেচছেন, কোড রক্ষণাবেক্ষণ করছেন না।
‘ডেমো তো ঝড়ের গতিতে লোড হচ্ছে’
ডেমোর ডেটাবেজে থাকে বারোটা প্রোডাক্ট আর তিনজন ইউজার। আপনার সাইটে থাকবে পাঁচ হাজার প্রোডাক্ট আর বিশ হাজার অর্ডার। খারাপ লেখা কোডের সবচেয়ে সাধারণ রোগ হলো N+1 কোয়েরি — লিস্টের প্রতিটা আইটেমের জন্য আলাদা ডেটাবেজ কল। বারোটা প্রোডাক্টে সেটা তেরোটা কোয়েরি, চোখেই পড়ে না; পাঁচ হাজার প্রোডাক্টে সেটাই পাঁচ হাজার কোয়েরি, আর শেয়ার্ড হোস্টিং হাঁটু গেড়ে বসে পড়ে।
মাপার উপায় সহজ। ওয়ার্ডপ্রেসে Query Monitor প্লাগইন বসিয়ে হোমপেজ খুলুন — কতগুলো কোয়েরি চলছে, আর পেজ জেনারেট করতে সার্ভারের কত সময় লাগছে দেখুন। সাধারণ একটা পেজে ১০০-র বেশি কোয়েরি, বা ১.৫ সেকেন্ডের বেশি সার্ভার রেসপন্স টাইম মানেই সামনে ঝামেলা। লারাভেল স্ক্রিপ্ট হলে Laravel Debugbar বসান, তারপর বিক্রেতার ডেমো ডেটা নয় — নিজের সাইজের ডেটা ঢুকিয়ে সবচেয়ে ভারী লিস্ট পেজটা খুলুন।
কেনার আগে বিক্রেতাকে একটা প্রশ্ন করুন: আপনার স্ক্রিপ্ট ৫০ হাজার রো নিয়ে কেউ চালিয়েছে? প্রশ্নটা এড়িয়ে গেলে সেটাই উত্তর।
‘সোর্স কোড পাচ্ছি, তাই যা খুশি বদলে নেব’
অনেক স্ক্রিপ্টে কিছু ফাইল থাকে ionCube বা obfuscator দিয়ে এনকোড করা — বিশেষ করে লাইসেন্স যাচাইয়ের অংশটা। মানে আপনি পুরো সোর্স কোড কেনেননি, একটা অংশ কিনেছেন। ওই এনকোডেড ফাইল যদি বিক্রেতার সার্ভারে ফোন করে লাইসেন্স যাচাই করে, আর বিক্রেতা দু-বছর পর ব্যবসা গুটিয়ে নেন, তাহলে আপনার লাইভ সিস্টেম একদিন সকালে বন্ধ হয়ে যাবে। তাই কেনার আগেই জিজ্ঞেস করুন: লাইসেন্স সার্ভার ডাউন থাকলে সাইট চলবে তো?
ওয়ার্ডপ্রেস থিমে আরেকটা ফাঁদ — কাস্টমাইজেশনের জন্য থিমের মূল ফাইল এডিট করা। পরের আপডেটে সেসব পরিবর্তন মুছে যাবে, তাই মানুষ আপডেট বন্ধ করে দেয়, আর তখন সিকিউরিটি প্যাচও আর আসে না। চাইল্ড থিম সাপোর্ট আছে কি না, হুক আর ফিল্টার দিয়ে আচরণ বদলানো যায় কি না — এটা কেনার আগেই দেখার জিনিস, পরে নয়।
‘একবার কিনলাম, আর কোনো খরচ নেই’
কোড একটা জীবন্ত জিনিস। PHP 8.1 থেকে 8.3-এ গেলে কিছু পুরোনো ফাংশন বাদ পড়ে; হোস্টিং কোম্পানি একদিন cPanel থেকে PHP ভার্সন আপগ্রেড করে দেবে, আর আপনার সাইট সাদা স্ক্রিন দেখাবে। লাইব্রেরিতে নতুন দুর্বলতা ধরা পড়বে, প্যাচ না দিলে সেটা খোলা দরজা হয়ে থাকবে। Envato-তে সাধারণত ছয় মাসের সাপোর্ট থাকে, বাড়িয়ে বারো মাস করা যায় — কিন্তু সাপোর্ট মানে বিক্রেতার বাগ ফিক্স, আপনার কাস্টম কাজ নয়। তাই কেনার সময় শুধু দাম নয়, দুই বছরের মালিকানার খরচ ধরুন: লাইসেন্স, রিনিউ, হোস্টিং, আর বছরে অন্তত কয়েক ঘণ্টা ডেভেলপার সময় আপডেট ও টেস্টিংয়ের জন্য। এই হিসেবটা করলে ফ্রি জিনিসের দাম হঠাৎ অনেক বেশি মনে হতে শুরু করে।
‘সিকিউরিটি তো হোস্টিং কোম্পানির দায়িত্ব’
হোস্টিং কোম্পানি সার্ভার সামলায়, আপনার অ্যাপ্লিকেশনের যুক্তি নয়। স্ক্রিপ্টের ভেতরে যদি ইউজারের দেওয়া আইডি দিয়ে সরাসরি ডেটা টেনে আনা হয় — যেমন invoice?id=105 বদলে 106 লিখলেই অন্য কাস্টমারের ইনভয়েস চলে আসে — তাহলে দুনিয়ার কোনো ফায়ারওয়াল আপনাকে বাঁচাবে না, কারণ রিকোয়েস্টটা দেখতে একদম বৈধ। এই ধরনের ব্রোকেন অ্যাক্সেস কন্ট্রোল OWASP-এর তালিকায় এখন একেবারে উপরে। কেনার আগে অন্তত চারটা জিনিস দেখে নিন।
- ফাইল আপলোডে এক্সটেনশন যাচাই আছে কি না; .php আপলোড করা গেলে সেটা সরাসরি সার্ভার দখলের রাস্তা
- অ্যাডমিন লগইনে রেট লিমিট বা ব্রুট-ফোর্স ঠেকানোর ব্যবস্থা আছে কি না
- ওয়ার্ডপ্রেস থিমে ফর্মে nonce আছে কি না, আর আউটপুটে esc_html বা wp_kses ব্যবহার হয়েছে কি না
- লারাভেল স্ক্রিপ্টে সার্ভার-সাইড ভ্যালিডেশন আছে কি না, আর মডেলে $fillable ঠিকভাবে দেওয়া আছে কি না
‘nulled ভার্সন তো একই কোড, শুধু টাকাটা বাঁচল’
না, একই কোড নয়। কেউ একজন কষ্ট করে লাইসেন্স চেক ভেঙে ফাইলটা ফ্রিতে বিলি করছেন — এই পরিশ্রমের পেছনে একটা কারণ থাকে। বেশিরভাগ সময় কারণটা একটা ব্যাকডোর: লুকানো অ্যাডমিন ইউজার, কিংবা আপনার ফুটারে ইনজেক্ট করা স্প্যাম লিংক, যেগুলো লগইন করা অবস্থায় আপনি দেখতেই পাবেন না — শুধু গুগল দেখবে। প্রথম লক্ষণ হ্যাকার নয়; প্রথম লক্ষণ হলো র্যাংক পড়ে যাওয়া, ব্রাউজারে লাল সতর্কবার্তা, আর হোস্টিং সাসপেন্ড।
টাকার হিসেবটা করুন। লাইসেন্স সাত হাজার টাকা। আর ম্যালওয়্যার পরিষ্কার, সব পাসওয়ার্ড বদল, ব্যাকআপ থেকে রিস্টোর আর গুগলে রিভিউ রিকোয়েস্ট — এই কাজের ডেভেলপার বিল সহজেই ত্রিশ থেকে পঞ্চাশ হাজার, আর ওই পুরো সময়টা আপনার দোকান বন্ধ। সাত হাজার বাঁচাতে গিয়ে বছরের সবচেয়ে ব্যস্ত সপ্তাহটা হারানোর কোনো মানে হয় না।
কেনার আগে ২০ মিনিটের চেকলিস্ট
- বিক্রেতার কাছে ফ্রন্টএন্ড নয়, অ্যাডমিন প্যানেলের ডেমো চান — আসল কাজ তো ওখানেই হয়
- জিপ ফাইল খুলে খুঁজুন eval( আর base64_decode; বড় এনকোডেড ব্লক পেলে সরে আসুন
- .env.example ফাইল আছে কি না দেখুন; ডেটাবেজ পাসওয়ার্ড কোডের ভেতরে লেখা থাকলে সেটা প্রোডাকশন-রেডি নয়
- composer.lock বা package-lock.json আছে কি না দেখুন — না থাকলে দুই মাস পর একই কোড থেকে একই বিল্ড পাবেন না
- ডেটাবেজ মাইগ্রেশন ফাইল আছে, নাকি শুধু বিক্রেতার ডেমো ডেটায় ভরা একটা .sql ডাম্প?
- ফাঁকা ডেটাবেজে ইনস্টল করে দেখুন, আর নিজের হোস্টিংয়ের PHP ভার্সনেই টেস্ট করুন — বিক্রেতার সার্ভারে নয়
সচরাচর জিজ্ঞাসা
প্রশ্ন: প্রোডাকশন-রেডি মানে কি বাগমুক্ত? উত্তর: না, বাগ সব কোডেই থাকে। প্রোডাকশন-রেডি মানে কোডটা ঠিকভাবে ভাঙে — ইনপুট যাচাই করে, ভুল হলে লগে লেখে, ইউজারকে বোধগম্য বার্তা দেখায়, আর দরকার হলে আগের ভার্সনে ফিরে যাওয়া যায়। পার্থক্যটা নিখুঁততার নয়, পূর্বানুমেয়তার।
প্রশ্ন: মার্কেটপ্লেস থেকে কেনা মানেই কি নিরাপদ? উত্তর: নিরাপদের দিকে এক ধাপ, কিন্তু গ্যারান্টি নয়। রিভিউ টিম গাইডলাইন মিলিয়ে দেখে, প্রতিটা আইটেমের পূর্ণাঙ্গ সিকিউরিটি অডিট করে না। তাই কেনার পরও উপরের চেকগুলো নিজে করে নেওয়াই বুদ্ধিমানের কাজ।
প্রশ্ন: ডেভেলপার হ্যান্ডওভারের সময় কী কী বুঝে নেব? উত্তর: কোড রিপোজিটরির অ্যাক্সেস, .env.example, ডেপ্লয়মেন্টের ধাপগুলো লেখা একটা ফাইল, ডেটাবেজ মাইগ্রেশন, আর সব ক্রেডেনশিয়াল নিজের নামে বদলে নেওয়া। ডোমেইন বা হোস্টিং যদি ডেভেলপারের ইমেইলে রেজিস্টার করা থাকে, সেটা আজই ঠিক করুন — ছোট ব্যবসা সবচেয়ে বেশি এভাবেই নিজের সাইটের নিয়ন্ত্রণ হারায়।
প্রশ্ন: সস্তা টেমপ্লেট মানেই কি খারাপ কোড? উত্তর: না। দাম আর মান সবসময় একসঙ্গে চলে না। ২০০ ডলারের স্ক্রিপ্টেও হার্ডকোড করা পাসওয়ার্ড দেখেছি, আবার কম দামের কিটেও পরিষ্কার কাঠামো পেয়েছি। দাম নয়, উপরের চেকলিস্টই আসল মাপকাঠি।
স্ট্যাক অ্যালিক্সে আমরা টেমপ্লেট আর কাস্টম সিস্টেম দুটোই বানাই, আর দুটোতেই একই নিয়ম মানি — এনভায়রনমেন্ট কনফিগ আলাদা, ডেটাবেজ মাইগ্রেশন থাকবে, এনকোডেড ফাইল থাকবে না, আর হ্যান্ডওভারে পুরো কোড আপনার হাতে যাবে। কোনো থিম বা স্ক্রিপ্ট কেনার আগে দ্বিধায় থাকলে লিংকটা পাঠাতে পারেন — কেনার আগে চোখ বুলিয়ে দেওয়াটা পরে ঠিক করার চেয়ে অনেক সস্তা।

