PHP নিরাপদ ইমেল
- পূর্ববর্তী পৃষ্ঠা PHP E-mail
- পরবর্তী পৃষ্ঠা PHP এরর
পূর্ববর্তী অধ্যায়ের PHP e-mail স্ক্রিপ্টে, একটি দুর্বলতা রয়েছে。
PHP ইমেল ইনজেকশন
প্রথমে, পূর্ববর্তী অধ্যায়ের PHP কোডটি দেখুন:
<html> <body> <?php if (isset($_REQUEST['email'])) //যদি "email" পূর্ণ হয়, ইমেল পাঠান { //ইমেল পাঠান $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } else //যদি "email" পূর্ণ না হয়, ফর্ম দেখান { echo "<form method='post' action='mailform.php'> ইমেইল: <input name='email' type='text' /><br /> বিষয়: <input name='subject' type='text' /><br /> বার্তা:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html>
এই কোডটির প্রকম্পণ হল, অভিধিকৃত ব্যবহারকারী ফর্মের মাধ্যমে ইমেল হেডারে ডাটা যোগ করতে পারেন。
যদি ব্যবহারকারী ফর্মের ইনপুট বক্সে এই টেক্সটগুলি যোগ করেন, তবে কী হবে?
someone@example.com%0ACc:person2@example.com %0ABcc:person3@example.com,person3@example.com, anotherperson4@example.com,person5@example.com %0ABTo:person6@example.com
সাধারণত, mail() ফাংশন উপরোক্ত টেক্সটকে ইমেইল হেডারে রাখে, তারপর হেডারের অতিরিক্ত Cc:, Bcc: এবং To: ফিল্ড থাকবে। যখন ব্যবহারকারী সম্মতি বাটন ক্লিক করে, এই ইমেইল উপরোক্ত সকল ঠিকানায় পাঠানো হবে!
PHP ইমেইল ইনজেকশন প্রতিরোধ
ইমেইল ইনজেকশনকে রোকার সর্বোত্তম পদ্ধতি হল ইনপুটকে ভেরিফাই করা।
এই কোডটি পূর্ববর্তী সেকশনের সমতুল্য, কিন্তু আমরা ফর্মের email ফিল্ডের ইনপুট ভেরিফিকেশন প্রোগ্রাম যোগ করেছি:
<html> <body> <?php function spamcheck($field) { //filter_var() sanitizes the e-mail //address using FILTER_SANITIZE_EMAIL $field=filter_var($field, FILTER_SANITIZE_EMAIL); //filter_var() validates the e-mail //address using FILTER_VALIDATE_EMAIL if(filter_var($field, FILTER_VALIDATE_EMAIL)) { return TRUE; } else { return FALSE; } } if (isset($_REQUEST['email'])) //if "email" is filled out, proceed //check if the email address is invalid $mailcheck = spamcheck($_REQUEST['email']); if ($mailcheck==FALSE) { echo "Invalid input"; } else //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } } else {//if "email" is not filled out, display the form echo "<form method='post' action='mailform.php'> ইমেইল: <input name='email' type='text' /><br /> বিষয়: <input name='subject' type='text' /><br /> বার্তা:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html>
এই কোডে, আমরা PHP ফিল্টার ব্যবহার করে ইনপুটটি পরীক্ষা করছি:
- FILTER_SANITIZE_EMAIL ইমেইলের অনৈতিহাসিক অক্ষরগুলি মুক্ত করুন
- FILTER_VALIDATE_EMAIL ইমেইল ঠিকানা পরীক্ষা
আপনি আমাদের PHP ফিল্টারএই অধ্যায়ে আরও বেশি ফিল্টার সম্পর্কে পড়ুন
- পূর্ববর্তী পৃষ্ঠা PHP E-mail
- পরবর্তী পৃষ্ঠা PHP এরর