আমাদের কথা খুঁজে নিন

   

সার্ভার সাইড ভেলিডেশনের প্রয়োজনীয়তা - ১



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

এবার মনে করুন একজন ব্যবহারকারী (আ্যাটাকার) ওই ড্রপডাউনটির তৃতীয় মানটি আংশিক পরিবর্তন করে অর্থাৎ ৩ কে -৩ (ঋণাত্নক) লিখে সার্ভারে পাঠাল। যেহেতু আপনি ধরেই নিয়েছেন ব্যবহারকারীকে সবসময় ১ থেকে ১০ এর মধ্যে যে কোনো একটি মান সিলেক্ট করে সার্ভারে পাঠাতে হবে সেহেতু ক্লায়েন্ট সাইডে ভেলিডেশন দেবার পর, আবার সার্ভার সাইডে ভেলিডেশন দেবার প্রয়োজন মনে করেননি। এদিকে পণ্যের দরের (৫,০০০.০০ টাকা) সঙ্গে পণ্যের সংখ্যা (-৩) কে গুণ করে গুণফল (-১৫,০০০.০০ টাকা) ব্যবহারকারীর আকাউন্ট থেকে কেটে নেয়া হয়েছে। ধরি ওই ব্যবহারকারীর একাউন্টে আগে থেকেই ২০,০০০.০০ টাকা জমা ছিল। সূত্রানুযায়ী এখন তার ব্যালেন্স হবে (২০,০০০.০০-(-১৫,০০০.০০)) = ৩৫,০০০.০০ টাকা।

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

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

মূলত, সাবমিট বাটনে ক্লিক করলে ব্যবহারকারীর দেয়া ক্রেডিট কার্ড সম্পর্কিত তথ্যের গ্রহনযোগ্যতা পরীক্ষা করে ব্যবহারকারীর ক্রেডিট কার্ড থেকে Total নামক টেক্সটবক্সটির মানের সমপরিমান টাকা (এক্ষেত্রে ১,৮৫০.০০ ডলার) কেটে নেয়া হবে এবং ব্যবহারকারীকে প্রতিষ্ঠানটির একজন আজীবন সদস্য হিসেবে বিবেচনা করা হবে। এরপর আমি যেটা করেছিলাম সেটা হলো Total নামক টেক্সটবক্সটির মান পরিবর্তন করে ১.০০ ডলার করে দিয়ে সাবমিট বাটন টিতে ক্লিক করেছিলাম এবং দেখতে পেলাম আমার দেয়া ক্রেডিট কার্ডটি থেকে মাত্র ১ ডলার কেটে নিয়ে আমাকে আজীবন সদস্যপদ দেয়া হয়েছে। লক্ষ্য করুন, নিরাপত্তার কথা ভেবে প্রোগ্রামাররা রেজিষ্ট্রেশন ফি এবং সর্বমোট টেক্সটবক্স দুটিকে নিষ্ক্রিয় করে রেখেছিলেন আর এ জন্য সার্ভার সাইডে কোনরূপ ভেলিডেশন দেয়ার প্রয়োজনীয়তা মনে করেননি। কোন নিষ্ক্রিয় ইউজার কন্ট্রোল কে সক্রিয় করার জন্য আমরা Web Developer নামক ফায়ারফক্সের এই জনপ্রিয় Add-on টিকে ব্যবহার করতে পারি নিম্নে দেখানো উপায়ে। আশা করি প্রোগ্রামার বন্ধুরা এতক্ষনে বুঝে গেছেন বিশেষ ক্ষেত্রসমূহে সার্ভার সাইড ভেলিডেশন কতখানি প্রয়োজন।

যে সমস্ত টেস্টার বন্ধুরা এই জাতীয় টেস্ট আগে করতেন না তাদেরকে বলবো, আজ থেকে আপনার টেস্ট কেস তালিকায় উপরের টেস্ট কেসটিও যোগ করে নিন। সতর্ক থাকুন, নিরাপদ থাকুন।

সোর্স: http://www.somewhereinblog.net     দেখা হয়েছে বার

অনলাইনে ছড়িয়ে ছিটিয়ে থাকা কথা গুলোকেই সহজে জানবার সুবিধার জন্য একত্রিত করে আমাদের কথা । এখানে সংগৃহিত কথা গুলোর সত্ব (copyright) সম্পূর্ণভাবে সোর্স সাইটের লেখকের এবং আমাদের কথাতে প্রতিটা কথাতেই সোর্স সাইটের রেফারেন্স লিংক উধৃত আছে ।

প্রাসঙ্গিক আরো কথা
Related contents feature is in beta version.