Tekil Mesaj gösterimi
Alt 17 Mart 2007, 20:43   #14
Çevrimdışı
telNET
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ASP Anlatımı (Dökümandır)




ASP’DE GÜVENLİK
Internet’te iyiniyetli olunmaz. Acı, ama gerçek. Internet’e içine zararlı kod yerleştirilebilecek bir Form koyarsanız, emin olmalısınız ki, birisi bu zararlı kodu koyacaktır. Sadece kötüniyetli kişilerin size söz gelimi elektronik posta adresi veya mesaj görünümünde zararlı kod göndermesini önlemek için değil, fakat normal kullanıcıların yapabilecekleri sıradan hataları yakalamak ve düzeltmek için de önlem almanız gerekir.
Server güvenliği son derece önemli bir konu olmakla birlikte, bunu sağlamak genellikle tasarımcının sorumluluğunda değildir. Bununla birlikte sayfalarımızın ve veritabanımızın güvenliği ve Web uygulamalarımızın doğru işlemesi bizden sorulur.
Bir form ile sizin sayfalarınıza veya veritabanınıza ne gibi zararlar verilebilir? Bu zararların başında, en hafifinden sizin sayfanızı başka yere yönlendirmek gelebilir. Kötüniyetin ölçüsü arttıkça bu, Server programının açıklarından yararlanarak, Server’daki dosyaları değiştirmeye veya tahrip etmeye kadar gidebilir. Normal ziyaretçi hataları arasında ise sözgelimi elektronik posta adresini iki @ işaretiyle yazmaktan tutun, bu işareti koymamaya, metktubun gideceği bilgisayarın adresini eksik yazmaya kadar uzanan bir dizi yanlışlık bulunabilir. Ziyaretçiler formu eksik doldurabilirler. Bu gibi eksiklikler ve yanlışlıkları daha sonra düzeltmek zaman kaybına yol açar. Kimi zaman eksik doldurulmuş bir Form, bu bilgilerin ulaştırılacağı ASP programında hataya yol açabilir. Bu sebeple, özellikle Form yoluyla alınan bilgilerin denetimi ve doğrulatılması şarttır.
Bir Form’un içerdiği bilgilerin denetimi ve doğrulanması iki yerde yapılabilir: istemci-tarafında, sunucu-tarafında. İstemci tarafında, yani ziyaretçiye göndereceğimiz HTML sayfasının içinde yer alan kodlarla yapacağımız denetim-doğrulama, hızlı çalışır; ve ziyaretçi ile sunucu arasında iletişim kurulmadan önce yapılır; böylece ziyaretçinin sözgelimi gönder düğmesini tıkladıktan sonra çok beklemesi gerekmez. Ne var ki bu yöntemde denetim-doğrulama kodu ziyaretçiye gönderilmiştir; kötü niyetli kişi neyi denetlediğinizi görecek ve isterse bu denetimi kaldıracak size zararlı kod parçacıkları gönderebilecektir. Denetimin sunucu tarafında yapılması, belki biraz daha fazla zaman harcamayı gerektirir, fakat güvenlik açısından daha etkili olabilir.
Bu bölümde ASP programlarınızın güvenliği ve etkinliği açısından almanız gereken bir çok önlemden ikisini, elektronik posta adresi doğırulama ile mesajların içinden zararlı kodları ayıklama yöntemlerini görelim.
Elektronik Adres Doğrulama
Ziyaretçimizin doğru adres verdiğini, bu adresin geçerli bir elektronik posta alıcısına ait olduğunu doğrulamamız mümkün değil, ama en azından adresin doğru yazılıp yazılmadığını denetleyebiliriz. Bunu yapmanın bir yolu elektronik adresin içinde @ karakteri ile en az bir adet nokta bulunduğunu garantilemek olabilir.
Bunu denetleyecek kodu içeren aşağıdaki örnek kodu email.asp adıyla kaydedin:
<% @Language = VBscript %>
<HTML>
<HEAD>
<TITLE>E-Mail Form’u</TITLE>
<META http-equiv="content-type" content="text/html; charset=ISO-8859-9">
<META http-equiv="Content-Type" content="text/html; charset=windows-1254"><%
If Not IsEmpty(Request.Form("Email")) Then
strEmail = Request.Form("Email")
If dogruMu(strEmail) Then
Response.Write strEmail & " adresini aldık; teşekk&#252;r ederiz.<BR>"
' .....[BURAYA DIĞER KODLAR GİRECEK]........................
Else *
*Response.Write strEmail & " adresi doğru g&#246;r&#252;nm&#252;yor.<BR>"
End If
End If
%>
<FORM "Name="Email" Action="email.asp" Method="post">
Enter an email address:
<INPUT Name="Email" Type=Text>
<BR>
<!- - Buraya formun diğer unsurları girecek - - >
<INPUT Type=Submit Value="G&#246;nder">
</FORM>
<SCRIPT RUNAT=SERVER LANGUAGE=VBScript>
Function dogruMu (byval adres)
AtIsareti=0 * * * 'saya&#231; olarak kullanacağımız
Nokta=0 * * * 'değişkenleri sıfırlayalım
dogruMu=false * * 'Fonksiyonun değerini yanlış olarak belirleyelim
KacKarakter=len(adres) * 'adresin boyutunu bir değişkene atayalım
For i=1 to KacKarakter 'd&#246;ng&#252;y&#252; başlatalım
*karakter=mid(adres, i, 1) 'sayacın g&#246;sterdiği karakteri alalım
*if karakter="@" then * '@ işareti olup olmadığına bakalım
* AtIsareti=AtIsareti + 1 '@ işareti ise sayacı bir arttıralım
*End If
*if karakter="." Then * * 'nokta işaretini arayalım
* Nokta=Nokta + 1 * 'nokta ise nokta sayasını bir arttıralım
*End if
Next * * * * * * 'bir sonraki karaktere ge&#231;elim
If AtIsareti=1 and Nokta >0 Then 'Bir @ ve en az bir nokta olduysa
dogruMu=true 'Fonksiyonun değerini doğru yapalım
End If
End Function
</SCRIPT>
</HTML>
Bu programı, bu şekliyle sınama amacıyla &#231;alıştırabilirsiniz. Fakat daha sonra programlarınızda kullanmanız gerekirse, bazı değişiklikler yapmanız gerekir. Bu değişiklikleri kodu inceledikten sonra ele alalım.
Sayfamızda tek elemanlı bir Form var ve sınama amacıyla buraya elektronik posta adresimizi yazabiliriz. Sayfa a&#231;ıldığında &#231;alışan VBScript’in kendi-i&#231;inde varolan isEmpty fonksiyonunu bir If d&#246;ng&#252;s&#252; i&#231;inde &#231;ağırarak, kendi i&#231;indeki formdan kendisine bir değer gelip gelmediğine bakacak; değer olmadığını g&#246;r&#252;nce formu sunacaktır. Forma herhangi bir şey yazıp, G&#246;nder d&#252;ğmesini tıkladığımız zaman ASP kodumuz, bu kez dogruMu adlı fonksiyona formdan gelen Email değişkeninin değerini vererek sonucu bekleyecektir.
dogruMu fonksiyonu g&#252;venlik kaygısıyla Server’da &#231;alışan sunucu-tarafı Script’tir; metni ve sonu&#231;ları kesinlikle kullanıcıya g&#246;nderilmeyecektir. Bu fonksiyon, kendisine aktarılan değişken değerinde, i&#231;i&#231;e iki If d&#246;ng&#252;s&#252; ile @ ve nokta işaretlerini arayarak sayacaktır. Bu sayımın sonucu iki değişkenin değerleri arzu ettiğimiz sayıda (AtIsareti bire eşit ve Nokta sıfırdan b&#252;y&#252;k) ise kendisini &#231;ağıran satıra True (doğru), değilse False (yanlış) değerini g&#246;nderecektir. Biliyoruz ki, bir fonksiyon doğru sonu&#231; verirse, If d&#246;ng&#252;s&#252; birinci komuttan, yanlış sonu&#231; verirse Else b&#246;l&#252;m&#252;nden yoluna devam eder. Bu &#246;rnekte, dogruMu fonksiyonu doğru sonu&#231; verirse Response.Write metoduyla Browser penceresine elektronik posta adresinin alındığına ilişkin teşekk&#252;r mesajı yazdırılacak; yanlış sonu&#231; verirse, adresin yanlış olduğu bildirilecektir.
Ger&#231;ek Internet uygulamasında bu t&#252;r bir sınama yapacağınız zaman, yukardaki programın fonksiyonu i&#231;eren SERVER SCRIPT (“<SCRIPT RUNAT=SERVER....>” diye başlayan ve “</SCRIPT>” diye biten) b&#246;l&#252;m&#252;n&#252; aynen sayfanızın herhangi bir yerine koyabilirsiniz. Daha sonra ziyaret&#231;iden gelecek elektronik posta adresine g&#246;ndermede bulunduğunuz ilk yerde ve bu adresi tutan değişken ile herhangi bir işlem yapmadan, &#246;rneğin veri tabanına yazmadan veya programın i&#231;inde bir başka şekilde kullanmadan &#246;nce, sadece şuna benzer bir kod b&#246;l&#252;m&#252; yazmanız yeter:
strEmail = Request.Form("Email")
If dogruMu(strEmail) Then
.....[BURAYA KODLAR GİRECEK]........................
Else *
*Response.Write strEmail & " adresi doğru g&#246;r&#252;nm&#252;yor.<BR>"
End If
Programınızın gereği olarak d&#246;ng&#252;n&#252;n ELSE b&#246;l&#252;m&#252;n&#252; değiştirebilirsiniz

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet sohbet