تماس با ما

موبایل: 2565 038 0912

دفتر تهران: 2565 2842 021

دفتر گرگان: 2565 3233 017


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

مقدمه :
کد ارسال ایمیل توسط فرم HTML که در بخش قبلی به شما آموزش دادیم ، درای یک نقطه ضعف است . اینکه کاربر می تواند در کادر متن آدرس ایمیل ، بیش از یک ایمیل وارد نموده یا حملات اسکریپتی انجام دهد .
برای حل این موضوع از یک اعتبار سنج داده در 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>


سفارش طراحی سایت

سفارش طراحی سایت

google
yahoo
alexa
ebook
Baidu.com
Wikipedia
Blogger.com
Windows Live
Amazon.com
eBay
Bing
Ask
استانداری گلستان
f shdj, sefaresh, sefaresh .net, sefaresh.net, sthva, sthva nhj kj, sthva.kj, stthva.kj, xvhpd, آیفون, استفاده, اندروید, اپل, اپلیکیشن, اینترنت, باتری, بازار, دستگاه, دوربین, سامسونگ, سفارش, سفارش دات نت, سفارش دات نت sefaresh.net, سفارش.نت, سیستم, طراح وب, طراحي وب سايت, طراحی, طراحی وب سایت, فناوری, فیسبوک, مایکروسافت, موبایل, هوشمند, کاربران, کمپانی, گلکسی, گوشی, گوشی هوشمند, گوگل

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