امنیت در کد ارسال ایمیل
یک ضعف در اسکریپت e-mail فصل قبل وجود دارد. ابتدا، به کد آن نگاهی می اندازیم:
<html>
<body>
<?php
//اگر تکست باکس ایمیل پرشده باشد،ایمیل ارسال می شود
if (isset($_REQUEST['email']))
{
//ارسال ایمیل
$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>
مشکل کد بالا این است که کاربران غیرمجاز می توانند از طریق فرم ورودی، درون header نامه، داده درج کنند.
توضیح بیشتر: چه اتفاقی خواهد افتاد اگر کاربر متن زیر را در فیلد ورودی email در فرم اضافه کند؟
%0ABcc:
%0ABTo:
تابع ()mail طبق معمول متن بالا را درون header نامه قرار می دهد و اکنون header فیلدهای اضافی cc و Bcc و to را دارد. وقتی که کاربر بر روی دکمه submit کلیک می کند ٫email به تمام آدرس های بالا ارسال خواهد شد!