ASP’de Güvenlik
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: istemcitarafı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 denetimdoğ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ür ederiz.<BR>"
' .....[BURAYA DIĞER KODLAR GİRECEK]........................
Else
Response.Write strEmail & " adresi doğru görünmü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önder">
</FORM>
<SCRIPT RUNAT=SERVER LANGUAGE=VBScript>
Function dogruMu (byval adres)
AtIsareti=0 'sayaç 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öngüyü başlatalım
karakter=mid(adres, i, 1) 'sayacın gö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çelimIf 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 ç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çıldığında çalışan VBScript’in kendi-içinde varolan isEmpty fonksiyonunu
bir If döngüsü içinde çağırarak, kendi içindeki formdan kendisine bir değer gelip gelmediğine
bakacak; değer olmadığını görünce formu sunacaktır. Forma herhangi bir şey yazıp, Gönder
düğmesini tıkladığımız zaman ASP kodumuz, bu kez dogruMu adlı fonksiyona formdan gelen
Email değişkeninin değerini vererek sonucu bekleyecektir.
<aspguv0001.tif>
dogruMu fonksiyonu güvenlik kaygısıyla Server’da çalışan sunucu-tarafı Script’tir; metni ve
sonuçları kesinlikle kullanıcıya gönderilmeyecektir. Bu fonksiyon, kendisine aktarılan
değişken değerinde, içiçe iki If döngüsü 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üyük) ise kendisini çağıran satıra True (doğru), değilse False (yanlış) değerini
gönderecektir. Biliyoruz ki, bir fonksiyon doğru sonuç verirse, If döngüsü birinci komuttan,
yanlış sonuç verirse Else bölümünden yoluna devam eder. Bu örnekte, dogruMu fonksiyonu
doğru sonuç verirse Response.Write metoduyla Browser penceresine elektronik posta adresinin
alındığına ilişkin teşekkür mesajı yazdırılacak; yanlış sonuç verirse, adresin yanlış olduğu
bildirilecektir.
Gerçek Internet uygulamasında bu tür bir sınama yapacağınız zaman, yukardaki programın
fonksiyonu içeren SERVER SCRIPT (“<SCRIPT RUNAT=SERVER....>” diye başlayan ve
“</SCRIPT>” diye biten) bölümünü aynen sayfanızın herhangi bir yerine koyabilirsiniz. Daha
sonra ziyaretçiden gelecek elektronik posta adresine göndermede bulunduğunuz ilk yerde ve bu
adresi tutan değişken ile herhangi bir işlem yapmadan, örneğin veri tabanına yazmadan veya
programın içinde bir başka şekilde kullanmadan önce, sadece şuna benzer bir kod bölümü
yazmanız yeter:
strEmail = Request.Form("Email")
If dogruMu(strEmail) Then
.....[BURAYA KODLAR GİRECEK]........................
Else
Response.Write strEmail & " adresi doğru görünmüyor.<BR>"
End If
Programınızın gereği olarak döngünün ELSE bölümünü değiştirebilirsiniz.
ASP Zararlı Kod Temizleme
ASP-uyumlu Server dendiği zaman akla ilk gelen Microsoft Internet Information Server, site
güvenliği açısından sürekli sınanan ve açığı bulunduğu taktirde MS’un yama programları ile bu
açığı giderilen bir sunucu programı olarak bilinir. Bu, IIS’in ve diğer MS ürünü Web sunucu
programlarının (MS Site Server ve MS Transaction Server ürünlerinin) “kurşun geçirmez”
olduğu anlamına gelmez. Fakat sunucu program üreticisi ne kadar önlem alırsa alsın, sizin
sitenize, kulllanıcıların yollayacağı zararlı kodları önlemeye çalışmayacaktır. Bu bir
zorunluktur. Sizin için zararlı kod sayılan metin, bir başka Internet sitesi için normal kullanıcı
girdisi olabilir. Server programını geliştirenler sizin ne tür girdiyi zararlı sayacağını bilemezler.
Bunu siz bilmek zorundasınız.
Son yılların deneyimleri gösteriyor ki, başka yollarla Internet sitenizin kök dizinine ulaşmaya
çalışan Hacker tiplerin dışında kalan zararlı kullanıcılar (Hacker özentisi kişiler!), genellikle
bir veritabanına gittiğini anladıkları Form bilgilerinin içine Server Side Include (sunucu
tarafında çalışacak haricî dosya) içeriği görevini yapacak kod parçacıkları katabilirler. Bu
amaçla kullanılabilecek zararlı bir kod şöyle olabilir:
<script language="JavaScript"><!--
function reload() {
self.focus();
document.location.href = "http://www.geocities.com/rasimy";
}
setTimeout("reload();", 5000);
// --></script>
Bu kodun bütün zararı, içerdiği veritabanını ASP sayfasının herhangi bir etiketi içinde
kullanıldığı taktirde ziyaretçiyi burada yazılı URL’e götürmesi ve buradaki sayfayı
Browser’ınızda görüntülemek olacaktır. Acemi Hacker’ın ziyaretçinizi zorla götürdüğü yeni
Internet sitesi, sadece içerik bakımından sakıncalı olmayabilir; ziyaretçiniz açısından gerçekten
tehlikeli bir alan olabilir; göndereceği çerezlerle (cookie) ziyaretçinin bilgisayarında zararlı
işler yapabilir. Ziyaretçi bu tuzağa sizin sitenizde bulunduğu sırada düştüğü için, sorumluluk,
en azından manevi olarak, size ait demektir.
Zararlı kodlar genellikle bu örnekte olduğu gibi büyüktür-küçüktür işaretleri, düz ve ters bölü
ile kesme işareti içerir. Örneğin bir konuk defterinde ziyaretçimizden ne gibi bilgi istersek
isteyelim, yazacağı metinde “<” ve “>” işaretlerinin bulunmaması gerekir. Normal bir mesajda,
ancak kod yazarken kullanılan bu işaretlerin yeri olamaz. Hatta daha hassas bir düşünceyle,
normal ve kısa bir konuk defteri mesajında tek ve çift tırnak, noktalı virgül satır başı (CR) ve
yeni satır (LF) işaretleri de bulunmamalıdır. Eğer normal bir ziyaretçi bu gibi işaretlerle dolu
bir mesaj yazmışsa, kötü niyetli kişilere karşı alacağımız önlemlerle bu iyiniyetli mesaj da
yazarının verdiği biçimi kaybedecektir. Bir kaç ziyaretçimizin konuk defterine fiyakalı yazılar
yazmasını sağlamak için, güvenlikten vaz geçmemek gerektiğine göre, “Kurunun yanı sıra yaş
da yanar!” demekten başka bir çare düşünmek kolay değil!)
Daha önceki bölümlerde yazdığımız kodları hatırlıyorsanız (veya kimse bakmazken o sayfaları
çevirir bakarsanız!), ziyaretçilerimizin Form yoluyla gönderdikleri verileri iki yolla alır ve bir
değişkene yazarız: QueryString ve Request.Form. İşte size bir Internet’te gerçekten kullanılan
bir konuk defterinin konuk girdilerini veritabanına işleyen bölümü:
<%
Ad = Request.Form("Isim")
Mektup = Request.Form("MailAdr")
Gorus = Request.Form("Mesaj")
Defter = "INSERT INTO mesaj (Isim, Email, Mesaj) VALUES ( "&" '" & Ad &"' , "&" '" & Mektup &"' , "&" '" &
Gorus &"')"
Set Veriyolu = Server.CreateObject("ADODB.Connection")
Veriyolu.Open("DSN=misdefter;")
Set RS = Veriyolu.Execute(Defter)
%>
Tasarımcı, Form’dan gelen üç değişkenin (Isim, MailAdr ve Mesaj) değerini, yeni üç
değişkene atamakta ve bunları oluşturduğu SQL INSERT deyimi yoluyla “misdefter” adlı
veriye yazdırmaktadır. Tasarımcının dünyayı sadece iyi insanlardan oluşan bir cennet sandığı,
kendisini tanımasanız bile, bu koddan anlaşılıyor. Dünyayı cennet yapmak elimizde olmakla
birlikte, henüz bütün insanlar bu konuda görüşbirliği içinde olmadığına göre, ziyaretçiden
gelen Form değişkenlerini atadığımız yeni değişkenlerin değerlerini elden geçirmeli ve
içindeki zararlı kodları ayıklamalıyız, ki sonra misafir defteriniz kevgire dönmesin!
Bu işlemi, sözgelimi yukarıdaki kodun sadece birinci değişkeni (Ad) için yapalım. Buradaki
Ad = Request.Form("Isim") satırını atacağız ve yerine şu 14 satırı koyacağız:
Ad = Trim(Request.Form("Isim"))'önündeki sonundaki boşluklari atalım
If Len(ad) Then
'**************** BURADA ISTENMEYEN KARAKTERLERI AYIKLIYORUZ ******************
Ad = Replace(Ad, Chr(10) , "") 'satır başı
Ad = Replace(Ad, Chr(34) , "") 'çift tıarnak
Ad = Replace(Ad, "'" , "") 'tek tırnak
Ad = Replace(Ad, Chr(13) , " ") 'yeni satır
Ad = Replace(Ad, "<" , " ") 'küçüktür
Ad = Replace(Ad, ">" , " ") 'büyüktür
Do While Instr(Ad, " ") 'iki aralık
ad = Replace(Ad, " " , " ")
Loop
Ad = Trim(Ad) 'önündeki sonundaki boşlukları da attık mı tamam
End If
Bu kod, Ad değişkenini, VBScript’in kullanılmaya hazır Replace() fonksiyonundan geçirerek,
içindeki istenmeyen karakterleri ya yok edecek ya da aralıkla değiştirecektir. Böylece eğer
kötüniyetli bir kişi, Form bilgisi olarak bize kod olarak kullanılacak bir takım metinler
yollamışsa, kodun ana içeriği yerinde kalmakla birlikte, kod olarak kullanılmasını sağlayacak
işaretler yok olacağı için kod düz yazıya dönmüş olacaktır.
ADO Güvenliği ve Hata Mesajları
MS Internet Information Server (IIS) ve diğer Web Server programları, istemcinin siteye
gönderebileceği talepleri hem kendi açılarından, hem de işletim sistemi açısından belirleme ve
sınırlama imkanı sağlarlar. Windows NT işletim sistemi bakımından Internet ziyaretçisi
herhangi bir ağ kullanıcısından farksızdır ve ulaşabileceği sayfalar (dosyalar) ve bu dosyalarla
yapabileceği işler, “Internet Kullanıcı Hesabı” denen kullanıcının haklarına bağlıdır. IIS’i
kuran Web Yöneticisi, bu hesaba istediği gibi haklar kazandırabilir veya sınırlamalar
getirebilir. Burada iki noktayı birbirinden dikkatle ayırmak gerekir:
Web ziyaretçisinin bir Web Sitesi’nde kullanabileceği haklar HTTP kaynakları ile sınırlıdır.
İşletim sistemi ile ilgili haklar bunun dışındadır. Fakat ikisinin çakıştığı nokta, özellikle
veritabanına dayanan Web sitelerinde, veritabanı dosyasının güncelleştirilmesi sırasında ortaya
çıkar. HTTP’nin ziyaretçiye sağlayabileceği bütün okuma-yazma hakları tanınsa bile, işletim
sistemi bir veritabanı dosyasının yeniden yazılmasına izin vermeyebilir.
Bunu, önceki bölümlerde veritabanı dosyasını güncelleştirme örneklerini yeniden çalıştırarak
sınayabilirsiniz. Kullandığınız veri tabanını sözgelimi Windows Gezgini’nde bulun ve sağ
tıklayarak “Salt okunur” hale getirin ve ilgili ASP programını çalıştırın; ODBC hata mesajı
verecektir.
Bu noktada Web Tasarımcısı olarak akılda tutacağımız ilke şudur: HTTP izinleri ne olursa
olsun, eğer işletim sisteminin izinleri daha kısıtlayıcısı ile, işletim sisteminin dediği olur.
Tasarımcı olarak bunun bize etkisi, genellikle Web sitemize evsahipliği yapan Server
işletmecisinin veritabanı dosyalarımıza yazma-okuma izni vermesini sağlamaktır. Web sitesi
evsahibi (Hosting) firması, veritabanı dosyasına DSN ayarı yaparken bu izni verecektir. Ancak
DSN kaydı yaptırıldığı halde veritabanınız ziyaretçilerinize ODBC hata mesajı veriyorsa
evsahibi firmanın yönetimine, veritabanı dosyasının “haklarını” yeniden belirlemesini
hatırlatmanız gerekebilir.
Veritabanı ile yönlendirilmiş Web sayfalarımızda en sık aldığımız hata mesajı:
[Microsoft] [ODBC Driver Manager] Data source name not found
olsa gerek. Bu mesaj, veritabanının ODBC’ye tanıtılması ile ilgili işlemde arıza olduğunu
gösterir. Ya veritabanı dosyasının sürümü, ODBC sürücülerinin kapsamı dışındadır, ya da
ODBC sürücüleri eksik kurulmuştur. Bunu, Windows’un Denetim Masası’nda ODBC
Yönieticisi’ni çalıştırarak ve sürücüler sekmesini seçerek denetleyebilirsiniz.
Bir diğer sık alınan hata türü ise 80004005’dir. Bu hatanın bir kaç türü olabilir:
Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC Microsoft Access 97 Driver] The
Microsoft Jet database engine cannot open the file ‘(unknown)’..
Bu hata mesajına bir kaç farklı durum sebep olabilir:
1. Internet kullanıcısına veritabanının işletim sistemi düzeyinde yazma-okuma yetkisi
verilmemiş olabilir.
2. Veritabanının bulunduğu dizinin işletim sistemi açısından dosya oluşturma ve silme yetkileri
yoktur.
3. Veritabanının bulun4. DSN oluşturulurken veritabanı salt okunur veya Exclusive olarak işaretlenmiş olabilir.
5. O anda dosyaya Server tarafında InterDev gibi bir Web Tasarım Programı erişiyor olabilir.
6. Sözkonusu Access dosyası, bulunduğu ağda yerel kullanıcıların hizmetine açık olabilir.
Bu sorunların çözümü için ODBC yapılandırma işleminin dikkatle yeniden tekrarı ve özellikle
sabit disk izinlerinin gözden geçirilmesi gerekir. Bu hata mesajını evsahibi firmanın
bilgisayarından alıyorsanız; Web Server yönetimine yeniden başvurmanız şarttır.
Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC Microsoft Access 97 Driver]
Couldn’t use the file ‘(unknown)’; the file already in use
Bu hata mesajının tek sebebi veritabanı dosyasının birden fazla kullanıcı tarafından
kullanılmasını önleyen kilit deyimlerinin kullanılmış olmasıdır. Çözümü, dosya ile ilgili
.Recordset deyiminin kilidi önleyecek şekilde yazılmasından ibarettir.
Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC Microsoft Access 97 Driver] Data
source name not found and no default driver specified
Veri tabanı ile veri-yolu bağlantısı kuracak Connection komutu, Global.asa dosyasından
alınmak isteniyorsa ve IIS Global.asa dosyasını çalıştıramıyorsa bu hata mesajıyla
karşılaşırsınız. Global.asa dosyasında şu kodun bulunup bulunmadığını kontrol edin:
<%=”’auth_user’ ise & request.servervariables(“auth_user”)%>
<p>
<%=”’auth_type’ is & request.servervariables(“auth_type”)%>
<p>
<%=”connection string is & session(“baglanti_deyimi”%>
<p>
Burada “baglanti_deyimi ifadesi yerinde sizin Connection deyiminiz yer almalıdır.
Global.asa’da bu ifadelerin bulunmasına rağmen yine de çalışmıyorsa, Web Server
programına, global.asa’nın içinde bulunduğu kök dizin için çalıştır (execute) izni verilmemiş
olabilir. Bu kişisel Web Server’da veya yerel IIS’te oluyorsa, bütün yapacağınız şey kök dizin
olan klasörü sağ tıklayarak izinlerini değiştirmektir. Bu hata evsahibi firmanın sitesinde
oluyorsa, Web Sitesi yönetimi ile temasa geçmeniz gerekir.
Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC Microsoft Access 97 Driver] Data
source name not ??
Web Server’ın bulunduğu bilgisayarda MDAC (Microsoft Data Access Component) dosyaları
ya bozulmuş ya da yanlış kurup kaldırma yüzünden bazı bileşenleri arasında sürüm farkı
doğmuş demektir. MDAC’ın güncellenmesi çözüm sağlayabilir.
Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC Microsoft Access ODBC driver
Driver] General error Unable to open registry key...
Registry Editor ile burada adı verilen kayıt anahtarı (Key) için verilen izinlerikontrol
etmelisiniz. Bunun için Regedt32.exe programını kullanabilirsiniz.
Microsoft OLE-DB Provider for ODBC Driver error ‘80004005’ [Microsoft][ODBC SQL Server Driver] [dbnmpntw]
ConnectionOpen (CreateFile()).
Aynı bilgisayarda bile olsa SQL Server izinleri yeterli değilse, ODBC sürücüleri veritabaına
ulaşamazlar. Sorunu çözmek için SQL Server yönetimiyle görüşmek ve izinleri değiştirmek
gerekirBu ve diğer 80004005 hata mesajları için Microsoft’un sitesinde Q189408, Q174943,
Q173742, ve Q175671 numaralı bilgi notlarına (Knowledgebase articles) başvurabilirsiniz.
ASP Hatası Arama
ASP teknolojisi, Internet’in kendisine göre nisbeten eski HTTP protokolü ile işbirliği yapmak
zorundadır ve bazen ASP sayfalarımızda oluşan hatalar, bizden (yazdığımız VBScript veya
diğer Script kodlarından) değil, bu iki teknolojinin Server’daki uyumsuzluğundan
kaynaklanıyor olabilir.
ASP teknolojisi üç adımda çalışır:
1. Ziyaretçi bir ASP sayfası talep eder
2. Server talep edilen belgenin bir ASP programı olduğunu belirler ve bunu ziyaretçiye
göndermeden önce ASP.DLL aracılığıyla çalıştırır.
3. Ortaya çıkacak olan HTML belgesi ziyaretçiye gönderilir.
Bu bakımdan ASP hatasını ararken sorulacak birinci soru hatanın nerede olduğu olmalıdır.
Hata istemci tarafında ise ASP sayfamız muhtemelen ziyaretçinin Browser’ı ile uyumlu
olmayan HTML kodu üretiyor olabilir. Ayrıca hatanın hangi aşamada olduğunu yakalamamız
gerekir.
Sık alacağımız bir ASP hatası, Server’ın vereceği “VBS Script Error:” şeklinde başlayan
mesajlar olacaktır. Bu, gerçekten de sayfamızdaki VBScript kodlarında hata olduğunu gösterir.
Yapılacak tek şey, iyi bir programcı gibi, biraz açık havada gezdikten sonra kodu baştan sonra
yeniden gözden geçirmek veya en iyisi başka bir programcının yardımını istemektir. Bir süre
sonra insan kendi yazdığı kodlardaki hataları göremez hale gelir!
Nesne oluşturma hataları ise “Failed to create ...” diye başlar ve hemen hemen daima ASP
sayfanızdaki S erver.CreateObject.. diye başlayan deyimin icra edilemediğini gösterir. Bu sizin
yanlış nesneye yanlış metod kullandırmaya kalkmanızdan olabileceği gibi, Web Server’ın size
bazı bileşen dosyalarına (.dll ve .exe) erişim hakkı vermiyor olmasından kaynaklanabilir.
Ücretsiz ASP desteği veren sitelerde çoğu zaman bu tür komutlar içeren Script’lere izin
verilmez.
İleri ASP Konuları
ASP’ye giriş niteliğindeki bu iki kitapçığın kapsamı dışında bırakılan bazı ASP konularını
burada sıralayarak, bundan sonraki adımlarınıza yardımcı olabiliriz. Server izin verdiği ve
gerekli yazılımı sağladığı taktirde, ASP sayfalarınızdan elektronik posta gönderebilirsiniz.
Bunun bir Form’un Server’ın CreateObject metodu ile Server’ın SMTP protokülünü kullanan
mesaj gönderme programına (IIS’te “CDONTS.Mail” nesnesine) ulaşması ve bu nesneye alıcı
ve gönderenin adresleri ile konu ve mesaj bölümlerini iletmesi gerekir. Bunun için gerekli
program (veya nesne) adını ve ASP sayfalarınızdan mektup gönderme izniniz olup olmadığını
Web Server yönetiminden öğrenmeniz gerekir.
Bir diğer ileri ASP tekniği ise COM bileşenlerini kullanarak, ASP sayfalarınızı VBScript veya
JavaScript yerine daha hızlı ve daha güvenli binary (program) dosyaları ile birleştirmek
olabilir. C++, Visual Basic, Borland Delphi gibi bir dille yazılmış ve derlenmiş olan COM
bileşenleri, kendilerine ASP sayfası tarafından gönderilen çağrı üzerine harekete geçerler ve
büyük bir ihtimalle Server dışında yapmaları gereken işi yaparak sonucunu ASP sayfasınaCOM bileşenleri daha hızlı çalışırlar ve Server’ın kaynaklarını kullanmadıkları için de Web
iletişimini yavaşlatmazlar. Bu tür bileşenlere çoğu zaman ADODB nesnesinin .Command
metodu ile erişiriz. Microsoft ve diğer firmalar, ASP sayfalarımızla birlikte kullanılmak üzere
COM programları üretmeye ve pazarlamaya başlamış bulunuyorlar. Bu tür bileşenleri gerçek
Internet Server ortamında kullanabilmek için, programın Server’ın bulunduğu bilgisayarda
Registry kaydının yapılması gerekir. Bunu Web Server yönetimi ile görüşmeniz şarttır
Yorum Gönder