پایپ فایو سیکور ایمیل

ਪਿਛਲੇ ਅਧਿਆਏ ਵਿੱਚ ਦਿੱਤੇ ਹੋਏ PHP e-mail ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਇੱਕ ਕਮੀ ਹੈ。

PHP E-mail ਇੰਜੈਕਸ਼ਨ

ਪਹਿਲਾਂ, ਪਿਛਲੇ ਅਧਿਆਏ ਵਿੱਚ ਦਿੱਤੇ ਹੋਏ 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("someone@example.com", "Subject: $subject",
  $message, "From: $email" );
  echo "شکریہ آپ نے ہمارے ایمیل فرم کو استعمال کیا";
  }
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>

ਇਸ ਕੋਡ ਵਿੱਚ ਮੌਜੂਦ ਮੁੱਦਾ ਇਹ ਹੈ ਕਿ ਅਧਿਕਾਰ ਰਹਿਤ ਉਪਭੋਗਤਾ ਫਾਰਮ ਦੇ ਮਾਧਿਅਮ ਨਾਲ ਈਮੇਲ ਹੈੱਡਰ ਵਿੱਚ ਡਾਟਾ ਜੋੜ ਸਕਦਾ ਹੈ。

ਜੇਕਰ ਉਪਭੋਗਤਾ ਫਾਰਮ ਵਿੱਚ ਇਨ੍ਹਾਂ ਟੈਕਸਟ ਨੂੰ ਜੋੜੇ, ਤਾਂ ਕੀ ਹੋਵੇਗਾ?

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 "شکریہ آپ نے ہمارے ایمیل فرم کو استعمال کیا";
    }
  }
else
  // اگر "ای میل" پرانگا نہ ہو، فرم نمائش کریں
  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 فیلٹراس سیکشن میں فیلٹر کے بارے میں مزید پڑھیں