به کمک نیاز داری؟
گروه کسب و کار ساکوراد
آموزش زبان PHP

آموزش زبان PHP | ارسال ایمیل ( Email ) امن به وسیله PHP

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

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

اعضای شبکه مشاوران در حوزه «برنامه‌نویسی، وب و امنیت سایبری»

طاهره حسن زاده

تحلیل‌گر داده و مشاور یادگیری‌ماشین و دیپ لرنینگ

اگر به مهارت های یک تحلیلگر داده با تجربه در...

فرید تشیعی

متخصص، استراتژیست و مشاور سئو (SEO)

اگر در پیاده سازی، تعیین استراتژی، بوت کمپ یا مدیریت...

بنفشه سیدکباری

مشاور تحقیقات بازار، بازاریابی و فروش

اگر علاقمندید در تراز شرکتهای بزرگ و صاحب‌نام، بخش بازاریابی...

سپیده گونجی

مشاور SEO ،UI/UX و بازاریابی دیجیتال

اگر قصد دارید در دنیای دیجیتال فعالیت کرده و در...

نیکا تهرانی

متخصص و مشاور سئو تکنیکال

اگر به استراتژی‌های حرفه‌ای سئو در موتور جستجوی گوگل از...

فاطمه مدیحی

مشاور برنامه نویسی جاوا اسکریپت، CSS و HTML

اگر به کمک شخصی با تجربه در برنامه نویسی Front-End...

ویدا رضایی

مشاور برنامه نویسی و طراحی وردپرس

اگر برای طراحی سایت وردپرسی خود به تجربیات و دانش...

احسان مهدوی

مشاور شبکه، نرم افزار و هوش مصنوعی

اگر به دنبال رفع چالشهای شبکه، نرم‌افزار و امنیت فضای...

برای حل این موضوع از یک اعتبارسنج داده در 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 , … ) ارسال می کند . این کار مطابق نظر وب مستر نبوده و برنامه را ممکن است دچار مشکل نماید .
اما راه حل چیست ؟!

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

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

نکات :
1 . تابع ( ) FILTER_SANITIZE_EMAIL ، کاراکترهایی اضافی که در ایمیل وارد شده اند را حذف می کند .
2 . تاع ( ) 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>

 

پیشنهاد بر اساس سلیقه شما

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

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

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

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

کانال یوتیوب

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

ساجد امجدی

ساجد امجدی

مشاور صنایع غذایی

اگر به عنوان کارآفرین یا تولیدکننده صنایع غذایی به دنبال…

رومینا عشاق پور

رومینا عشاق پور

مشاور و طراح محصول

اگر به یک طراح محصول حرفه‌ای و آشنا به دغدغه‌های…

میثم صحراکار

میثم صحراکار

مشاور عکاسی و فیلمبرداری

اگر به دنبال خلاقیت در عکاسی و تصویربرداری برای تولید…

فاطمه محمدی

فاطمه محمدی

مشاور برندسازی، بازاریابی و فروش

اگر بعنوان کارآفرین یا فعال اقتصادی بدنبال تقویت برند، رونق…

مبینا استیری

مبینا استیری

مشاور عکاسی، فیلمبرداری و مدیریت تولید

اگر به کمک یک ویدئوگرافر و مدیر تولید مسلط به…

نگار رحمتی

نگار رحمتی

مشاور و طراح UI/UX برمبنای اصول بازاریابی

اگر به یک طراحی UI/UX برمبنای اصول بازاریابی جهت حل…

مریم عبدلی

مریم عبدلی

مشاور برندینگ و تحقیقات بازار

اگر نیازمند تحلیل و ارزیابی رفتار مشتریان، نیاز بازار و…

سحر مسعودی

سحر مسعودی

مشاور و تحلیل‌گر داده‌

اگر به تجزیه و تحلیل داده های پیچیده و یافتن…

فاطمه پورمحمد

فاطمه پورمحمد

مشاور برنامه نویسی، پایگاههای داده‌ای و دیتاساینس

اگر به یک تحلیل‌گر حرفه‌ای داده، برنامه‌نویس مسلط به پایگاههای…

کانال تلگرام

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

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

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

راهنمای گام به گام تا دریافت مشاوره

گام اول

انتخاب حوزه تخصصی مدنظر

گام دوم

بررسی رزومه مشاوران مرتبط

گام سوم

انتخاب مشاور با تخصص مدنظر

گام چهارم

تکمیل فرم و ثبت درخواست

گام پنجم

پرداخت حق‌الزحمه مشاور

گام ششم

تماس با شما برای تعیین وقت

گام هفتم

برقراری ارتباط شما با مشاور