متوقف کردن تزریقات E-mail در php
بهترین راه برای متوقف کردن تزریقات email، معتبر کردن ورودی است.
کد زیر مانند کد فصل قبل است٫ اما حالا ما یک معتبرساز وروردی که فیلد email را در فرم چک می کند اضافه کرده ایم:
<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']))
{
//چک می کنیم که آدرس ایمیل معتبر است یا نه
$mailcheck = spamcheck($_REQUEST['email']);
if ($mailcheck==FALSE)
{
echo "Invalid input";
}
else
//ارسال ایمیل
{
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail("
$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 زیر، برای معتبرسازی ورودی استفاده کرده ایم:
- فیلتر FILTER_SANITIZE_EMAIL: تمام کاراکترهای غیرمجاز ایمیل را از رشته حذف می کند.
- فیلتر FILTER_VALIDATE_EMAIL: آدرس ایمیل را معتبر می کند.
برای اطلاعات بیشتر درمورد فیلتر های PHP می توانید به بخش PHP Filter مراجعه کنید.