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

امنیت ایمیل در PHP

امنیت ایمیل در PHP در ایرناک امنیت ایمیل در PHP در ایرناک  

<html>
<body>
 
<?php
if (isset($_REQUEST['email']))
//if "email" is filled out, send email
{
//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail("این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید", "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'>
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>

 

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

someone@example.com%0ACc:person2@example.com
%0ABcc:person3@example.com,person3@example.com,
 
anotherperson4@example.com,person5@example.com
%0ABTo:person6@example.com

هر آنچه که تابع ایمیل میخواهد برای کابر بفرستند در header ذخیره شده و برای تمام ایمیل های فرستاده میشود و از نظر وب مستر دارای ایراد است و امنیت ایمیل در PHP و باعث ایجاد اختلال در برنامه میشود.

 

جلوگیری از حملات به ایمیل در PHP

برای جلوگیری این حملات اسکریپتی به ایمیل در PHP به معتبر بودن داده ها را بررسی میکنیم.

برای افزایش امنیت ایمیل در PHP به کد قبل دو تابع اضافه کردیم. یک تابع بررسی میکند و تعداد ایمیل ها اگر زیاد باشد آن ها را پاک میکند دیگری معتبر بودن ان را بررسی میکند. در صورتی که این شرایط برقرار نباشد به کاربر پیغام ایمیل معتبر را وارد نمایید را نشان میدهد در غیر این صورت اطلاعات ایمیل را ذخیره کرده و ایمیلی با پیغام نوشته شده در message به کاربر ارسال میشود.

  • تابع ( ) FILTER_SANITIZE_EMAIL: اگر بیش از یک ایمیل نوشته شده باشد، ایمیل ها را پاک میکند.
  • تابع ( ) FILTER_VALIDATE_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("این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید", "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'>
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>

منابع : W3schools/mobtadi/stackoverfollow

بازدید : 242 بار
(1 رای)
امنیت ایمیل در PHP - 5.0 out of 5 based on 1 vote

نوشتن نظرات

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


تصویر امنیتی