با کمک ساکوراد، برگ تازه‌ی کتاب زندگی‌ات را ورق بزن...

ارسال ایمیل امن با PHP

ارسال ایمیل ( Email ) امن به وسیله PHP

کد ارسال ایمیل امن با PHP توسط فرم HTML که در بخش قبلی به شما اموزش دادیم ، دارای یک نقطه ضعف است. اینکه کاربر می تواند در کادر متن ادرس ایمیل ، بیش از یک ایمیل وارد نموده یا حملات اسکریپتی انجام دهد.

 

حتما بخوانید: اموزش ارسال ایمیل ( Email ) به وسیله PHP

 

برای حل این موضوع از یک اعتبارسنج داده در PHP استفاده می کنیم . ابتدا نگاهی به کد PHP بخش قبل بیاندازیم :

مثال <html>
<body>
<?php
if (isset($_REQUEST[’email’]))
// دستور بالا در صورتی که کادر ایمیل پر شده باشد ، ایمیل را ارسال می کند
{
// ارسال ایمیل
$email = $_REQUEST[’email’] ;
$subject = $_REQUEST[‘subject’] ;
$message = $_REQUEST[‘message’] ;
          mail ( “someone@example.com” , $subject , $message , “From:” . $email) ;
echo “از ارسال ایمیل شما متشکریم”;
}
else
// اگر کادر ایمیل پر نشده باشد ، برنامه فرم زیرا را نمایش می دهد
{
          echo ” < form method=’post’ action=’mailform.php’ >
          Email : < input name=’email’ type=’text’ /> <br />
Subject : < input name=’subject’ type=’text’ /> <br />
Message : <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 ، ادرس های فوق را به عنوان هدرهای ایمیل ثبت کرده و ایمیل را به همه انها ( Bcc , Cc , To , … ) ارسال می کند . این کار مطابق نظر وب مستر نبوده و برنامه را ممکن است دچار مشکل نماید .
اما راه حل چیست ؟!

 

حتما بخوانید: ایجاد و استفاده از کوکی (Cookie) در PHP

 

جلوگیری از حملات اسکریپتی PHP در تابع ( ) mail :

راه حل جلوگیری از حملات اسکریپتی در PHP ، اعتبار سنجی اطلاعات ورودی قبل از ارسال فرم است .
در کد زیر که اصلاح شده کد قبلی است ، دو تابع را به کد اضافه کرده ایم که اطلاعات وارد شده در فرم را اعتبار سنجی کرده و در صورتی که دارای فرمت صحیح یک ایمیل باشد ، اجازه Submit فرم را می دهد .

توضیحات بیشتر را درون مثال ذکر کرده ایم :

نکات :

۱ . تابع ( ) FILTER_SANITIZE_EMAIL ، کاراکترهایی اضافی که در ایمیل وارد شده اند را حذف می کند .
۲ . تاع ( ) FILTER_VALIDATE_EMAIL ، بررسی می کند که ایا ایمیل وارد شده فرمت صحیح یک ایمیل را دارد یا خیر .
برای دریافت اطلاعات بیشتر ، به بخش اعتبار سنجی مقادیر ورودی در PHP بروید .

مثال ارسال
ایمیل صحیح
<html>
<body>
<?php
function spamcheck($field)
{
// این تابع کاراکترهای غیر مجاز در ادرس ایمیل را پاک می کند
$field=filter_var($field, FILTER_SANITIZE_EMAIL);// این تابع فرمت ایمیل را بررسی کرده و در صورت داشتن فرمت مقدار مثبت بر می گرداند
if( filter_var($field, FILTER_VALIDATE_EMAIL) )
{
return TRUE;
}
else
{
return FALSE;
}
}if (isset($_REQUEST[’email’]))
{
// در مرحله اول چک می شود ایا مقداری برای ایمیل وارد شده یا خیر
//check if the email address is invalid
$mailcheck = spamcheck($_REQUEST[’email’]);
if ($mailcheck==FALSE)
{
echo “فرمت نا صحیح”;
}
else
{
// ارسال ایمیل
$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
{
//  اگر ایمل وارد نشده باشد ، فرم زیر را نمایش می دهد
echo “<form method=’post’ action=’mailform.php’>
Email: <input name=’email’ type=’text’><br>
Subject: <input name=’subject’ type=’text’><br>
Message:<br>
<textarea name=’message’ rows=’15’ cols=’40’>
</textarea><br>
<input type=’submit’>
</form>”;
}
?> </body>
</html>

 

با دریافت « مشاوره برنامه‌نویسی، وب و سئو » از کارشناسان جوان حرفه‌ای و باتجربه ساکوراد؛ موفقیت کسب و کار، رونق فروش و افزایش درامد خود را تضمین کنید!

 

 و اما کلام اخر…

با رعایت نکات فوق و استفاده از اعتبارسنجی مناسب، می‌توانید ایمیل‌های امن‌تری را با PHP ارسال کنید. همچنین، استفاده از کتابخانه‌های معتبر می‌تواند به شما در مدیریت بهتر فرایند ارسال ایمیل امن با PHP کمک کند.

تصویر دکتر علی قوامی
دکتر علی قوامی
دانش‌اموخته دکترای تخصصی (PhD) کارافرینی فناوری، بنیانگذار و مدیر گروه بین‌المللی کسب و کار ساکوراد با بیش از ۲۰ سال تجربه بعنوان کوچ، مدرس، مشاور و منتور در حوزه‌های مختلف راه‌اندازی و توسعه کسب‌وکار در 17 کشور جهان هستم. در تلاشم تا تجربیات ذی‌قیمت خود را با شما دوستان عزیزم به اشتراک گذارم.
پیشنهاد بر اساس سلیقه شما

مسیریابی تحصیلی - شغلی (آنلاین)

تست شغلی به آزمون روانشناسی گفته می شود که فرد با توجه به پاسخگویی به سوالات در انتها بهترین شغلی که می تواند در آن موفق باشد را معرفی می کند.

سئوالات و نظرات ارزشمند خود را با ما مطرح کنید

دیدگاهتان را بنویسید

کلینیک مشاوره کسب و کار

ارائه‌ی خدمات کوچینگ، مشاوره و منتورینگ توسط برترین متخصصان جوان

هاست سنتر حرفه‌ای

طیف وسیعی از خدمات حرفه‌ای هاستینگ با تنوع و کیفیت کنترل شده

کانال یوتیوب

آموزش‌ها و نکات کلیدی ما را دنبال کنید

کانال تلگرام

اخبار و تخفیفات گروهی ما را دنبال کنید

صفحه اینستاگرام

آموزش‌ها و تخفیفات گروهی ما را دنبال کنید