1

PHP – Güvenli Email

Posted Mart 2nd, 2008. Filed under PHP Dersleri

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

Etiketler:

, , , ,


Yazar hakkında
Atilla Akoğlu
Yazılım uzmanı & Serpito.com kurucusu & Müstakbel girişimlerin öncüsü & internet meraklısı & Antalyada yaşıyor... kişisel portfolyo

Stumbleupon'a Ekle

One Response so far

  1. mehmet buzluk diyor ki:

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

Yorumunuzu paylaşın