Bu Blogda Ara

4 Nisan 2010 Pazar

Cesar Algoritması Spam Postalara Karşı

Herkese merhaba,

Sanırım herkesin ortak derdidir önemsiz (spam) postalar. En büyük sıkıntı e-posta aderesimizi bir kere kötü insalara kaptırdığımızda artık geri dönüşü olmayan bir gereksiz e-posta yağmuruna tutuluyoruz. Birçok yöntem olmasına karşın ben burada sizlere bir web geliştirici olarak sitemizde yayınlayacağımız e-posta adreslerini spam mail atanlardan nasıl koruyacağımızı basit bir yöntemle anlatmaya çalışacağım.

Sitemizde yayınladığımız e-posta adresleri özel geliştirilmiş programlar tarafından taranıp toplanıyor. Daha sonra spam listesine yeni bir kurban olarak ekleniyor. Peki bunun önüne nasıl geçilebilir? İlk akla gelen mail adresimizi bir resim olarak yerleştirmek ya da bozuk bir formatta email (at) domain.com gibi kullanmaktır. Böyle yapmak bir çözüm olabilir. Ama biz direk sayfamızda mail adresinimiz görünsün ya da mailto: şeklide link vermek istiyorsak ne yapmalıyız?

Bilgi Günveliği Seminerinde Huzeyfe Önal'ın bahsettiği bir yöntem vardı. Sayfa üzerinde normal mail adresleri dışında bir de spam@domain.com gibi bir adres daha veriyormuş. Böylelikle normal adreslerin yanında bu adresi de listeye ekleyen spam mesaj gönderici programlar bu adresede reklam içerikli mail atıyorlar. Yalnız şöyle bir sistem geliştirmiş kendileri; o mail hesabına mail atan tüm mail adresleri kara listeye alınıyormuş. Böylelikle diğer adresler en fazla 1 tane spam alıyorlar. Zekice ve etkili bir yöntem olabilir. Ama ben hem maliyetli buluyorum hem de her ne koşulda olursa olsun mail adresimin spam uygulamaları tarafından yakalanmasını istemiyorum.

Peki ne yapabiliriz? Spam robotları sayfalar üzerinde düz yazıları okurlar. Resim, ses, video ya da çalıştıralabilir kodları (javascript, vb.) okuyamazlar ( en azından şimdilik:) ). Bu noktadan hareket edersek biz e-mail aderesinimizi basit bir Cesar algoritmasıyla şifreleyip istemc tarafında javascript ile çözümlersek hem robotları atlatmış oluruz hem de kullanıcıya korkmadan mail adresimizi sunmuş oluruz.

Ben bir örneği PHP dilinde vereceğim. Siz istediğiniz dil ile istediğiniz platformda gerçekleyebilirsiniz.

<?php
$xor_key = 19;
$email = '<a href="mailto:epostam@websitem.com">epostam@websitem.com</a>';
$sonuc ="";
for($i=0; $i<strlen($email); $i++)
{
$sonuc.= chr(ord($email[$i]) ^ $xor_key);
}
?>


<script language="javascript">
function decrypt()
{
var obje = document.getElementById('e_pos_ta');
var text = "<?php echo str_replace('"','\"', $sonuc); ?>";
var code="";
for(var i=0; i<text.length; i++)
{
code+=String.fromCharCode(text.charCodeAt(i) ^ <?php echo $xor_key; ?>);
}
obje.innerHTML = code;

}
</script>



<body onload="decrypt()">
...

<span id="e_pos_ta"><?php echo htmlspecialchars($sonuc); ?></span>


Ben algoritmayı biraz değiştirdim. Cesar kusura bakmasın :) Harfleri kaydırmak yerine basit XOR işlemi uyguladım. İsterseniz algoritmayı karıştırıp işi daha da zorlaştırabilirsiniz. Spam robotları artık sitenizdeki eposta adreslerini göremeyecekler.

Hiç yorum yok: