PHP – Güvenli Email

Ö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>

One thought on “PHP – Güvenli Email

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir