Gelişmiş Log Tutma

Kayıt
7 Haziran 2008
Mesaj
533
Tepki
6
Birçok büyük sistem logları veritabanında saklamak yerine dosya sisteminde saklamayı tercih ederler. Çünkü;

a) Daha hızlı
b) Kontrolü daha kolay
b) En önemlisi daha güvenli

Saldırganın admin panelini ele geçirdiğini düşünelim, buradan istediği şekilde loglarda oynama yapabilecektir, ama biz dosya sistemi kullansaydık saldırgan değil admin paneli FTP şifresini bile eline geçirse loglara erişemez.

Bir ay önce yazdığım sistem olan online kontrolde ben log tutması için dosya sistemini kullandım. İlk log sistemim olduğu için biraz amatörce ama memnunum. Sayfa isimleri ve o sayfada Log sistemi ile ilgili kullandığım kodları veriyorum kendinize göre düzenleyerek kullanabilirsiniz.

Register.asp // Kullanıcı Kayıt Oluyor gerekli klasör ve dosyalar yaratılıyor ve kullanıcının ilk profili kayıt ediliyor:



Kod:
<%


randomize


sTempWord = 1024*rnd


Set FSO = CreateObject("Scripting.FileSystemObject")


    With FSO


.CreateFolder Server.MapPath("userFiles")&""&Request.Form("formUsername")


.CreateTextFile Server.MapPath("userFiles")&"" &Request.Form("formUsername")&"firstProfile."&sTempWord


.CreateTextFile Server.MapPath("userFiles")&""&Request.Form("formUsername")&"passwordChanges.log"


.CreateTextFile Server.MapPath("userFiles")&""&Request.Form("formUsername")&"failedAttempts.log"


.CreateTextFile Server.MapPath("userFiles")&""&Request.Form("formUsername")&"successfulLogins.log"


    End With








Set fileObj = FSO.OpenTextFile(Server.MapPath("userFiles")&""&Request.Form("formUsername")&"passwordChanges.log",8,0)


fileObj.WriteLine "First Password '"&Request.Form("formPass1")&"' | Time - IP: "&Now&" - "&Request.ServerVariables("REMOTE_ADDR")


Set fileObj = Nothing


Set fileObj = FSO.OpenTextFile(Server.MapPath("userFiles")&""&Request.Form("formUsername")&"firstProfile."&sTempWord,2,0)








With fileObj


.WriteLine "Kullanici ID: "&rsUserAdd("id")


.WriteLine "Ad: "&rsUserAdd("fname")


.WriteLine "Soyad: "&rsUserAdd("lname")


.WriteLine "Kullanici Adi: "&Request.Form("formUsername")


.WriteLine "Kullanici sifresi: "&Request.Form("formPass1")


.WriteLine "Dogum Tarihi: "& Request.Form("formDobDay")&"."&Request.Form("formDobMonth")&"."&Request.Form("formDobYear")


.WriteLine "Gizli Soru: "&rsUserAdd("squestion")


.WriteLine "Cevap: "&rsUserAdd("sanswer")


.WriteLine "Cinsiyet: "&rsUserAdd("gender")


.WriteLine "Aktivasyon Kodu: "&rsUserAdd("regcode")


.WriteLine "Kayit Zamani - IP: "&rsUserAdd("regdt")&"-"&Request.ServerVariables("REMOTE_ADDR")


.Close


End With








Set FSO = Nothing


Set fileObj = Nothing


rsFSO.close : Set rsFSO = Nothing %>




Login.asp // Kullanıcı giriş yapıyor ve log tutuluyor:

Kod:
Set FSO = CreateObject("Scripting.FileSystemObject")


Set fileObj = FSO.OpenTextFile(Server.MapPath("userFiles")&""&Session("username")&"successfulLogins.log",8,0)


fileObj.WriteLine "Successful Login | Time - IP: "&Now&" - "&Request.ServerVariables("REMOTE_ADDR")


fileObj.Close


Set FSO = Nothing


rsFSO.close : Set rsFSO = Nothing

forgotPassword.asp // Kullanıcı şifremi unuttum bölümünde yanlış denemeler için log:



Kod:
Set FSO = CreateObject("Scripting.FileSystemObject")


Set fileObj = FSO.OpenTextFile(Server.MapPath("userFiles")&""&Request.Form("formUsername")&"failedAttempts.log",8,0)


fileObj.WriteLine "Failed Forgot Password Attempt | Time - IP: "&Now&" - "&Request.ServerVariables("REMOTE_ADDR")


fileObj.Close


Set FSO = Nothing


rsFSO.close : Set rsFSO = Nothing


Bu örnekler genişletilebilir özellikle mesela klasörleme sistemi geliştirebilir. A-C | C-E gibi klasörleme sistemi yapılabilir.


Önemli Not: Log klasörüne mutlaka 80. porttan erisim olmasın, siteniz d: sitelerx.com http docs default.asp ise log dosyaları d: sitelerx.com logfiles yolunda olsun.
 
Yukarı Alt