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

   

ক্যাপচা আর রিক্যাপচা: স্প্যাম প্রতিরোধের শক্তিশালী ও সহজ ইন্টারফেইস

Let the wind blow out the candles
ইন্টারনেট ব্যবহার করে আসছেন অথচ ক্যাপচা-টেস্ট দেননি এমন কাউকে অন্তত এ যুগে খুজে পাওয়া যাবে না! আরে, আমি আবার ক্যাপচা টেস্ট দিলাম কখন? অনেকেই হয়ত ভাবছেন এ কথা। যারা ওয়েবমাস্টার বা টেকি নন, তাদের মনে অবশ্য এপ্রশ্ন আসা একেবারেই স্বাভাবিক। আচ্ছা, মনে করে দেখুন তো, ইন্টারনেটে কোন ওয়েবসাইটে কোন একটা ফর্ম পূরণের সময় বা অন্য যেকোন সময়ই কখনো হিজিবিজি অক্ষর/ছবি ওয়ালা কোন একটা ইমেজ পেয়েছেন কি? যেখানে ছবির হিজিবিজি আর অবিন্যস্ত অক্ষর/সংখ্যাগুলো আমাদের একটা টেস্কবক্সে লিখে দিতে হত। আপনার দেওয়া ইনপুটের সাথে যদি ছবির সত্যতা যাচাই সম্ভব হয়, তাহলেই আপনাকে দেওয়া হত কাঙ্ক্ষিত সুবিধাটি। কি, এবার মনে পড়েছে? এটাকে অনেকেই ইমেজ ভেরিফিকেশন/রবোট ভেরিফিকেশন বলে।

অর্থাৎ আপনি কি মানুষ নাকি কোন অটোমেটিক কোড, এটা যাচাই করার পদ্ধতিকেই টেকিরা বলে থাকে CAPTCHA ভেরিফিকেশন। এখন আসা যাক ক্যাপচা'র অস্তিত্ব কেন- সেই প্রসঙ্গে। ইন্টারনেটে অনেক ফর্ম আমরা প্রতিনিয়ত সাবমিট করি। ব্যবহারকারীরা সেই ফর্মে প্রয়োজন মত ডাটা দিয়ে সার্ভিস নেবে, এটাই প্রত্যাশিত। এই ফর্ম সাবমিট-ই যেমন আমরা কিবোর্ডে লিখে করতে পারি, তেমনটাই করা যেতে পারে কোন অটোমেডিক স্ক্রিপ্ট (কোড) লিখে।

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

মানে আমি ছবিতে কিছু লিখে (সেটা সংখ্যা হতে পারে, র‌্যান্ডম অক্ষর হতে পার, শব্দ হতে পারে, আবার হতে পারে সহজ কোন এরিথমেটিক অপারেশন যেমন ২ + ৩ =?) প্রতিবার একটা ফর্ম সবমিটের সময় র‌্যান্ডম ভাবে দিয়ে দিলাম। একবার সাবমিট করলেই সেটার ভেলিডিটি আর থাকবে না। নতুন করে কেউ ফর্ম সাবমিট করতে চাইলে তাকে নতুন একটা ছবির জন্য রিকোয়েস্ট করতে হবে (মানে সোজা কথায় ব্রাউজার রিফ্রেস করতে হবে। ) প্রতিবার যেহেতু নতুন নতুন র‌্যান্ডম সংখ্যা লোড হচ্ছে, সেটা স্ক্রিপ্টের পক্ষেও ধরা সম্ভব নয় এখন কিভাবে আপনার ওয়েবসাইটে কোন একটা ফর্ম সাবমিটের সময় CAPTCHA ব্যবহার করবেন? ধরেন আপনার সাইটে একটা মন্তব্য অপশন আছে, যেটায় কেউ ম্যাসেজে ফিডব্যাক জানাতে পারে। এখন আপনি যদি কোন CAPTCHA ভেরিফিকেশন না দেন, আমি একটা স্ক্রিপ্ট লিখে আপনার সার্ভারে adfdsfdsfdfdssafd টাইপের ভুয়া ফিডব্যাকের বন্যা বসিয়ে দিতে পারি! বা সামান্য পাকনা ইউজারই একের পর এক সাবমিট বাটন চাপতে চাপতে মেসেজের পর মেসেজ পাঠাতে পারে।

বিষয়টার কনসেপ্ট নেবার জন্য আমার ফিডব্যাকের পেইজটা দেখে আসুন: http://buet07.org/comment2wm.php ঠেকানোর উপায় হল- সহজ একটা ইমেজ ভেরিফিকেশন এড করে দিন। আমার পেইজটার শেষ অপশন হিসেবে যেটা দেখানো হয়েছে। এখানেই কিন্তু, আমি তো আর পি.এইচ.পি টেকি না, নরমাল একজন ডেভেলপার তাহলে আমি কিভাবে CAPTCHA লাগাবো? এখন নেটে অনেক ওপেন সোর্স CAPTCHA টুলস পাওয়া যায়। তবে এখন যেটুলসটির কথা বলব সেটা ওপেনসোর্স না হলেও, যথেষ্ট শক্তিশালী আর রিলেয়েবল। সেটার নাম হল reCAPTCHA এটার ব্যবহার খুবই সহজ।

তবে ব্যবহারে যাবার আগে জেনে নেই এটার স্পেশাল ফিচারগুলো। রিক্যাপচা যেভাবে ইমেজ প্রসেস করে, সেটা খুবই ইন্টারেস্টিং। তাদের মটো হল: Stop Spam, Read Books! স্প্যাম ঠেকানোর সাথে বইএর সম্পর্ক কি? এটাই মজার! পুরাতন সব দুর্লভ বই স্ক্যান করে আর্কাইভ করে রাখে, এমন প্রজেক্টের সাথে জড়িত হল রিক্যাপচা। বই এর ছবি জায়গা বেশি নেয়, তাই সেগুলো OCR এর সাহায্যে টেক্সেটে রূপান্তরিত করা হয়। যেসব দুর্বোধ্য শব্দ রিড করে রিকগনাইজ করা সম্ভব হয়না, সেগুলো আলাদা ডেটাবেইসে রাখা হয়।

এখন নিশ্চয়ই বুঝে ফেলেছেন এই শব্দগুলো, যেগুলো মেশিন পড়তে পারেনা, সেগুলোই আপনাকে ক্যাপচায় ভেরিফিকেশনের জন্য দেয়া হয় এর একটা সুবিধা হল মেশিন যেহেতু এই শব্দগুলো চেনে না, তাই এবইউজ হবার সম্ভাবনা কম। একটা মজার প্রশ্ন, মেশিনই যদি শব্দটাকে চিনতে না পারে, তাহলে আমি যে সঠিক শব্দটিই লিখেছি সেটা রিক্যাপচা যাচাই করে কিভাবে? রিক্যাপচাও তো মেশিন... আফটার অল! এখানেও মজা! রিক্যাপচা সবসময় আপনাকে দু'টো শব্দ ভেরিফাই করতে দেয়, যার একটির মান সে নিশ্চিতভাবে জানে। যদি আপনি এই জানা শব্দটা সঠিকভাবে যাচাই করতে পারেন, তাহলে সে ধরে নেবে অন্য শব্দটা (যেটা রিক্যাপচার কাছে অচেনা) আপনি যাচাই করতে পেরেছেন। এরপর এই অজানা শব্দটা রিক্যাপচা অন্যদের দেবে যাচাইএর জন্য। এভাবেই সর্বাধিক প্রাপ্ত ম্যাচের ওপর ভিত্তি করে রিক্যাপচা তার চেনা ওয়ার্ডের ডেটাবেইস সমৃদ্ধ করে।

রিক্যাপচা যদি আপনার সাইটে ব্যবহার করতে চান, তাহলে প্রথমে আপনাকে ফ্রি রেজিস্ট্রেশন করতে হবে। রেজিস্ট্রেশন করলেই তারা আপনাকে দুটি আইডি দেবে- একটি হল প্রাইভেট কি আরেকটি হল পাবলিক কি। এই কি দুটো নিরাপদে সেইভ করে রাখুন। এরপর আপনার পছন্দমত ইন্টারফেসে (সব সার্ভার সাইড ল্যাংগুয়েজের জন্যই এর সাপোর্ট আছে) রিক্যাপচা ব্যবহার করতে পারেন। তাছাড়া প্রায় সব জনপ্রিয় ওপেনসোর্স প্রজেক্টের জন্যও রিক্যাপচার প্লাগইনস আছে- * WordPress * MediaWiki * phpBB * Movable Type (contributed by Josh Carter) * Drupal (contributed by Rob Loach) * Symfony (contributed by Arthur Koziel) * Typo3 (contributed by Jens Mittag. See also the example of using the plugin) * NucleusCMS (contributed by Matt) * vBulletin (contributed by Magnus) * Joomla (contributed by Robert van den Breemen) * JSP Mailhide (by Tamas Magyar) প্লাগইনস পেতে এই পেইজে চলে যান- http://recaptcha.net/resources.html উদাহরণ হিসেবে পি.এইচ.পি. তে রিক্যাপচা'র ইম্প্লিমেন্টেশন দেখতে পারেন- যেই পেইজে আপনার ফর্মটি আছে, সেই পেইজটি ওপেন করুন।

এবার যেখানে রিক্যাপচাটি দেখাতে চান, সেখান শুধু নিচের কোডটি পেস্ট করে দিলেই চলবে (এর আগে রিক্যাপচার সোর্সকোড ডাউনলোড করে নিতে হবে)- <?php require_once('recaptchalib.php'); $publickey = "..."; // you got this from the signup page echo recaptcha_get_html($publickey); ?> মনে রাখবেন, ডাউনলোড করা সোর্সকোডটি যেই ডিরেক্টরিতে আপনার ফাইলগুলো আছে, সেখানে আপলোড করে দিতে হবে। এবার ফর্ম প্রসেস এর পালা। ফর্ম প্রসেস যেই পেইজটিতে করছেন, সেটায় নিচের কোড পেস্ট করে দিন। <?php require_once('recaptchalib.php'); $privatekey = "..."; $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if (!$resp->is_valid) { die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . "(reCAPTCHA said: " . $resp->error . ")"); } ?> সুবিধামত কোড মডিফাই করে নিতে পারেন। দেখলেন তো কত সহজ রিক্যাপচার ব্যবহার! তাই অন্য কোন ক্যাপচা টুলস ইউজ করার আগে আরেকবার ভেবে দেখবেন রিক্যাপচার কথা
 


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

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