folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder Asp İle Güvenlik Ve Performans [Beyaz Tahribat]



Asp İle Güvenlik Ve Performans [Beyaz Tahribat]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Abizittin
    Abizittin's avatar
    Kayıt Tarihi: 19/Haziran/2008
    Erkek

    Herşeyde olduğu gibi kullandığımız şeylerin güvenliği tam olmalıdır. Nasıl evimize hırsızın girmemesi için alarm taktırıyorsak veya bünyemizde çalışan bir işçinin performansına göre ücret veriyorsak asp dilinde güvenlik ve performans bu denli önemlidir. Bu güzel örnekten sonra asıl meseleye geçelim. :) Bildiğiniz gibi asp sunucu taraflı bir dildir. Bu yüzden diğer sunucu taraflı diller gibi bir takım güvenlik açıklarını manuel olarak kapatmamız gerekiyor.

    Güvenlik veya açık dediğimizde 10 yaşındaki çocuğun bile bildiği or açığı geliyor aklımıza. Bu açıkla daha çok üyelik sistemlerinde , string ile veri sorgularken karşılaşıyoruz. Form ile gönderilen verileri temizlemek için en uygun yöntem replace yani süzme yöntemidir. Formlardan veri gönderirken daha çok tırnak işareti ve bilindik sql deyimleri yazılır. Hemen bir örnek göstereyim :

    Function Temizle(data)
    data = Replace (data , "select","",1,-1,1)
    data = Replace (data , "insert","",1,-1,1)
    data = Replace (data , "update","",1,-1,1)
    data = Replace (data , "delete","",1,-1,1)
    Temizle = Data
    End Function

    Kullanım :

    isim = Temizle(Request.Form("isim"))

    Gibi klasik sql deyimlerini temizleyebiliriz. Bir diğer açık QueryString ile gönderilen verilerde karşımıza çıkıyor. Gönderilen değer bir id numarası veya bir text olması gerekirken , saldıran kişi oraya sql cümleleri yazarak veritabanımızda çeşitli işlemler yapabiliyor. QueryString ile gelen veriyi işlediğimiz sayfanın başına eklememiz gereken kod aşağıdaki gibidir :

    ID = Trim(Request.QueryString("ID"))
    if (not isnumeric(ID)) then
    Response.Write "Hatalı bir ID numarası girdiniz."
    Response.End
    End if

    Gibi bir deyim yazmanız bu saldırıyıda bertaraf etmenize olanak sağlayacaktır. Gelelim yazının bir diğer konusu olan performans konusuna. Scriptlerde performansı sağlamanın çeşit çeşit yolu vardır. Bu yollar kullandığınız sisteme göre değişir. Ama bu yazıda başlıca ufak performans kayıplarını önlemenin yollarını anlatıcam.

    Asp yi ilk öğrendiğimiz zamanlarda sıkça kullandığımız olan nesne Recordset ilerki zamanlarında bize ciddi performans kayıpları yaşatacaktır. Bu yüzden Recordset yerine Execute metodunu kullanmalıyız. Bu metodu veya Recordset i kullanırken dikkat etmemiz gereken bir noktada şu ki Select diye başladığımız sql cümlelerinde gereğinden fazla alanın seçilmesi ciddi performans kayıplarına neden olacaktır. Hemen bir örnek vereyim :

    Set JDSQL = Server.CreateObject("Adodb.Recordset")
    sql="Select * from uyeler"
    JDSQL.Open sql,Conn,1,3

    Yerine

    Set JDSQL = BaglantiDegiskeni.Execute("Select ID,Isim from Uyeler")

    Gibi bir sql cümlesi yazmamız gerekiyor. Peki bu açtığımız bağlantılar nereye gidiyor ? Biz kapatana kadar açık kalıyor ve sistemin gereksiz yere yavaşlamasına neden oluyor. O yüzden sayfanın sonunda veya işlemlerin bittiği yerde açtığımız bağlantıları birer birer kapatmalıyız. Oda şöyle ki :

    JDSQL.Close
    Set JDSQL = Nothing

    Asp programlama dilinde güvenlik ve performans konusunda başlangıç olarak bu kadar bilgi herkese yeter. İleri derecede performans kayıplarını önlemek için yapmanız gerekenleri zaten zamanla öğrenirsiniz. Yazıyı okuduğunuz için teşekkürler :)

    -----

    not : daha yeni kendi sitemde yazdım. taze taze hayrını görün. kodlarda veya herhangi bir yerde yazım yanlışı olabilir bunun için kusura bakmayın.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pesimistzombie
    pesimistzombie's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    kısa ele almışsın performans ve güvenlik ayrı ayrı geniş kapsamlı ele alınmalıdır ancak dediğin gibi yeni başlayanlar için güzel döküman olmuş eline sağlık. Asp ve performans üzerine sağlam Türkçe kaynak yok ne yazıkki. Güvenlik olarak da her yerde replace yöntemleri anlatılmış.. isnull, isnumeric request.form , request.querysting nerelerde nasıl kullanılmalıdır, replacenin işe yaraması için nelere dikkat edilmelidir, bunlar performansa nasıl etki eder performans için sadece sql cümleleri yeterlimidir if else yerine nerelerde select case kullanırsak performans yükselir vs.. 

    geniş bi zamanda geniş bir döküman hazırlayalım bence aspyi yaşatmak yeni nesillere aktarmak lazım :d


    :|
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MaTRiXe
    MaTRiXe's avatar
    Kayıt Tarihi: 04/Ocak/2006
    Erkek
    teşekkürler  pesimistzombie nin dediği gibi geniç kapsamlı bi döküman güzel olur
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Abizittin
    Abizittin's avatar
    Kayıt Tarihi: 19/Haziran/2008
    Erkek

    pesimistzombie

    yorumun için teşekkürler.

    tabi ki hocam yazdıklarım başlangıç düzeyinde kullanıcılar için.

    aslında performans ve güvenlik konusunda sıkı bi döküman olsa hiç fena olmaz.

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SyspioniC
    SyspioniC's avatar
    Kayıt Tarihi: 26/Eylül/2007
    Erkek
    güzel döküman elien sağlık

    "Derviş Yunus bu sözü eğri büğrü söyleme, Seni sorguya çeker bir Molla Kasım gelir."
Toplam Hit: 1113 Toplam Mesaj: 5