March 2004 - Posts

Mail Adreslerimizi Örümceklerden Saklayalım

Hepimiz spamla mücadele için çeşitli yollara başvurmuşuzdur. Mail adresimizi ulu orta yerlerde yayınlamamak veya toplu mail gönderirken tüm mail adreslerini Bcc hanesine eklemek gibi. Fakat genede mail adresimizin kötü niyetli spamcıların eline geçmesine engel olamıyoruz. Bu spamcıların mail adresi toplama tekniklerinden biride İnternetteki siteleri tarayıp mail adresi arayan örümcek adı verilen robot yazılımlardır. Birazdan bu robotları safdışı bırakan bir tekniği inceleyeceğiz.

      Önce örümceklerin çalışma mekanizmasından bahsedelim. Bu örümceklerden en meşhur ve insanlığın yararına çalışanı hepimizin bildiği Google dur. Bir sitenin anasayfasından başlayarak içeri doğru verilen linkleri takip ederek tüm sayfaları kendi hafızasına alır. Mail adresi toplayan örümceklerde aynı yöntemi kullanır fakat Google gibi sayfaların tüm içeriklerini hafızasına almaz. Okuduğu sayfanın içinde bir email adresinin taşıdığı özellikleri arar, @ işareti, @ işaretinden önceki kısmı, @ işaretinden sonra kısmı noktası gibi özelliklerini program içinde yerleştirilmiş algoritma marifetiyle bulur ve yeni kurban olan mail adresini veritabanına ekler.

      Bir çok sitede mail adreslerinin eskiden olduğu gibi falanca@filancasite.com yerine falanca[at]filancasite.com şeklinde yazıldığına rastlamışızdır. Buda örümceklerden kurtulmanın bir yolu olabilir fakat akıllı bir programcı bunun da üstesinden rahatlıkla gelebilir. Bu yöntemin diğer bir dezavantajı ise bir scroll çubuğunu bile sürüklemekten üşenen biz miskin internet kullanıcılarının ilgili kişiye mail göndermeyi bir eziyet haline getirmesidir. falanca[at]filancasite.com kelimesini seç, kopyala, mail göndereceğin programın To kısmına yapıştır [at] ifadesini sil yerine @ yaz derken mail gönderme işleminden vazgeçip farklı bir siteye odaklanır ve göndereceğimiz mailide unuturuz.

      Peki hem robotların bulamayacağı bir yöntemle mail adreslerimizi sitemize eklemeyi hem de kullanıcın bir tıkla mail göndermesi için nasıl bir cambazlık yapmalıyız ?

      İşe mail adreslerimizi şifreleyerek başlayabiliriz. Örneğin mail adresimizi falanca@filansite.com yerine e`k`mb`?ehk`mrhsd-bnl şeklinde yazarsak eminim örümcek hiçbir şey anlamayacaktır. Mail adresimi bir ASP scripti kullanarak yukarda belirttiğim gibi e`k`mb`?ehk`mrhsd-bnl şekline çevirdim. Bu ASP scripti şöyle bir şey :  

1    Function EncryptMail(sMail)
2    	
3       Dim sEncryptedMail,i
4    	
5       For i = 0 to len(sMail) - 1		
6          sEncryptedMail = sEncryptedMail + chr ( asc ( mid(sMail,i + 1,1) ) - 1 )
7       Next
8    	
9       EncryptMail = sEncryptedMail
10   	
11   End Function

Fakat bu ifadeyi sadece örümcek değil ziyaretçinin browser ı ve tabiiki kullanıcılarda anlamayacaklardır. O halde browser ve kullanıcılar için bir javascript kullanarak bu ifadeyi aslına çevirecek bir decoder yazalım :     

1    function myMailSender(s){
2              var s2 = '';
3              for(var i = 0; i < s.length; i++){
4                   s2 += String.fromCharCode(s.charCodeAt(i) + 1 );
5              }
6    
7         document.location.href="mailto:" + s2;
8         }	
9    

 Şifrelenmiş mail adresini orijinal haline getirip kullanıcının mail göndermesi için kullanıcının sistemindeki varsayılan mail programını açıp mail göndermeye hazır hale getiren javascriptimizide yazdık.

      Bize düşen bu javascript fonksiyonuna mail adresimizin şifrelenmiş halini göndermek gerisini JavaScript'in kudretli ellerine bırakmaktan ibaret. Aynen şöyle :

<a href="#" 
onclick="BLOCKED SCRIPT myMailSender ('e`k`mb`?ehk`mrhsd-bnl')">
Falanca ya mail gönder
</a

 

Posted by Selçuk Yavuz | with no comments
Filed under:

ASP.NET'e Giriş

Bu sözü ilk nerde duydum, sahibi kimdir bilmiyorum ama her an her yerde karşıma çıkıyor ne kadar doğru bir söz olduğunu kantılarcasına. Evet sonunda web programlama diye anılan bir programlama kolunda hatrı sayılır yer edinmiş ASP de değişti. Modaya uyup sonuna bir X koydular ASPX oldu.

    Peki değişim sadece bu kadar mı ? Tabii ki hayır. Aslında değişim kelimesi ASPX ile ASP arasındaki farkları tanımlamaya yetmiyecek bir kelime. Devrim desek daha yerinde bir kullanmış oluruz. Sakın devrim kelimesi gözünüzü korkutmasın. Hiç mi tanıdık bir şeylere rastlamayacağız, şimdiye kadar ki ASP bilgimizi hiçe sayıp yepyeni bir mantık mı inşa ettiler diye de düşünmeyin.

Standart bir ASP.NET uygulaması 4 temel maddeden oluşuyor

  1. Uygulamanın çalışacağı IIS dizini
  2. ASPX dosyaları
  3. Global.asax dosyası
  4. Web.config dosyası

 

    ASP.NET, uygulamamızı daha yetenekli ve kullanışlı hale getirecek bir çok dosyayıda beraberinde getirdi. Bunlar : .ascx, .asmx, .vb, .cs . Bu dosyaları kısaca yüzeysel tanımları şöyledir.

.ascx : Kullanıcı kontrollerinin barındıran dosya türüdür.
.asmx : XML Web hizmetlerini uygulamak için kullanılmaktadır.
.vb : Visual Basic .NET kod modüllerinin uzantısıdır. Code-Behind yöntemi kullandığınıldığında kullanılan aspx dosyaından aynı ismi taşıyan bir de vb dosyası oluşturulur.
.cs : C# Visual Studio .NET kod modüllerinin uzatısıdır. Code-Behind yöntemi kullanıldığında C# dili kullanılıyorsa aynı isimi taşıyan bir de cs dosyası oluşturulur.

    Yukarıda bahsettimiğimiz Global.asax ve Web.config ise uygulamanın temeli işlevlerini üstlenir.

Global.asax : Eski ASP deki global.asa nın görevini üstlenir.

Web.config : Uygulamanın yapılandırılmasını sağlar. XML veri içerir. Hiyerarşik yapıya sahiptir. Yani içinde bulunduğu klasör ve alt klasörlerini etkiler. Fakat alt klsasörlerden birinde web.config dosyası daha bulunursa bir üstteki web.config dosyası geçersiz olur.

    ASP.NET bir çok yenilikle geliyor demiştik. Bunlardan biride ASP ile yaptığımız uzun ve zahmetli işlerin Visual Studio.NET ile çok daha kolay ve hızlı bir şekilde yapılabilmesi. Bir veritabanındaki bilgileri görüntülemek için yaptığımız veritabanı bağlantısı, recordset oluşturma ve bu recordset teki bilgileri bir döngü ile döndürüp html etiketleri arasına sıkıştırma işlemi Visual Studio.NET ve ASP.NET in getirdiği yeniliklerden DataGrid ile 30 saniye süren bir işleme dönüyor.

    Eski ASP aslında o kadar kötü değildi. ASP yazan kişinin farkına varmadan bazı yetenekler kazanmasına neden oluyordu. Bazen günde 40-50 yi bulan Server.CreateObject ifadesini kullanmak ve buna benzer rutin işleri yapmak size ekrana ve klavyeye bakmadan arkadaşınızla muhabbet etmek, milli maç seyretmek gibi yetenekler kazandırıyordu. Aynı sayfada kod yazmaya alışmış ve kolay kolay bırakamayacak olanlarda düşünülmüş ve ASPX sayfaları Code-Behind çalıştığı gibi ASP.NET kodlarınızı aynı ASP.NET sayfasında yazabilme imkanı verilmiş.

Peki nedir bu Code-Behind ?

    Türkçeye Arka-Kod olarak çevirebilir. Yani arkada çalışan kod. Yukarıda bahsettiğimiz .vb ve .cs uzantılı dosyalar Arka-Kod un bulunduğu dosyalar. Uygulamanın tüm kodları bu dosyada bulunur ve burdan çalıştırılır. Diyelimki ASPX sayfamızda bulunan bir Label1 isimli bir etiketimiz var ve uygulamamızı Visual Basic.NET ile geliştiriyoruz. .vb uzantılı dosyamızda Page_Load isimli fonksiyonumuzun içine Label1.Text ="Merhaba Dünya" yazdık. .aspx sayfamızı çağırdımız zaman aynı ismi taşıyan .vb uzantılı dosyasındaki Page_Load fonksiyonu çalışır ve .aspx sayfamızda bulunan Label1 isimli etiketimizin Text özelliğine "Merhaba Dünya" değişkenini atar ve karşımızda bize merhaba diyen bir sayfa çıkar.  

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)_
Handles MyBase.Load
	
	Label1.Text = "Merhaba Dünya"
	
End Sub
  İyi de uslu uslu aynı sayfada çalışmak varken neden kodlarımızı ayrı bi dosyada tutalım ki ? Bunu bana be gibi bir getirisi olur ? Aslında bir değil bir çok getirisi var. Code-Behind kavramını görsel işleri üstlenen HTML işe uygulamayı üstlenen ASPX kodunun birbirinden ayırmayı sağlayan bir yöntemdir diye kısaca tanımlayabiliriz. Getirisine gelince de
  1. Görsel ve uygulama kodlarının birbirinden ayırarak daha sağlıklı bir uygulama geliştirme olanağı sağlar.
  2. Farklı projelerde kullanılacak ASPX dosyasının yeni projelere daha kolay adapte edebilme imkanı verir.
  3. Uygulama kodu HTML den ayrıldığı için daha kolay okunur.
  4. Telif haklarının korunmasına olanak sağlar. Code-Behind sayesinde derlenmiş kod kullarak yazdığımız kodun saklı olmasını sağlayabiliriz
İşte kısaca ASP.NET.

 

Posted by Selçuk Yavuz | 1 comment(s)
Filed under:
More Posts