Önceki dersimizde güvenlik düşünülmeden hazirlanmış email gönderme formunu açıkladık.İnternet ne kadar verimli ve yararlı bir platform olsa da güvenlik düşünülmesi gereken en önemli konulardan biridir
E-mail Sızmalarıİlk olarak bir önceki dersimizde uyguladığımız e-mail formunu tekrar ele alalım:
<html>
<body>
<?php
if (isset($_REQUEST['email']))
{
//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail(“someone@example.com”, “Subject: $subject”,
$message, “From: $email” );
echo “Email formumuzu kullandığınız için teşekkürler”;
}
else
//if “email” is not filled out, display the form
{
echo “<form method=’post’ action=’mailform.php’>
Email: <input name=’email’ type=’text’ /><br />
Konu: <input name=’subject’ type=’text’ /><br />
Mesaj:<br />
<textarea name=’message’ rows=’15′ cols=’40′>
</textarea><br />
<input type=’submit’ />
</form>”;
}
?>
</body>
</html>
Yukarıdaki kodumuzun sorunu,yetkilendirilmemil kullanıcıların ,mail başlıklarına fazla,zaman zaman da zararlı olan verilerin girmelerini engellememekti.
Aşağıdaki textin e-mail input bölümüne girildiğini düşünelim,, sonuç ne olacak sizce?
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() fonksiyonu yukardaki texti normal bir veri olarak işleme koyacaktır. Kullanıcı submit butonuna bastığı anda yukarda yazan tüm adreslere mail gönderilecektir!
E-mail Sızmalarını DurduralımE-mail sızmalarını engellemenin en iyi yolu input onaylama yapmaktır.Aşağıdaki kod örneğimiz ,önceki örneğimiz ile aynı yapıya sahiptir,fakat bu örneğimizde input-girdi alanlarımızı onaylayıcı kodlar ekledik:
<html>
<body>
<?php
function spamcheck($field)
{
if(eregi(“to:”,$field) || eregi(“cc:”,$field))
{
return TRUE;
}
else
{
return FALSE;
}
}
// “email” alanı doldurulmuş ise ,gönder
if (isset($_REQUEST['email']))
{
//e-mail adresinin doğruluğunu kontrol et
$mailcheck = spamcheck($_REQUEST['email']);
if ($mailcheck==TRUE)
{
echo “Geçersiz girdi”;
}
else
{
// email gönder
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail(“someone@example.com”, “Subject: $subject”,
$message, “From: $email” );
echo “Formumuzu kullandığınız için teşekkürler”;
}
}
else
//”email” alanımız doldurulmamış ise formu yeniden yükle
{
echo “<form method=’post’ action=’mailform.php’>
Email: <input name=’email’ type=’text’ /><br />
Konu: <input name=’subject’ type=’text’ /><br />
Mesaj:<br />
<textarea name=’message’ rows=’15′ cols=’40′>
</textarea><br />
<input type=’submit’ />
</form>”;
}
?>
</body>
</html>


gönder butonu veya linki neden yok nasıl olacak