folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder [Beyaz Tahribat] Asp"De Güvenlik



[Beyaz Tahribat] Asp"De Güvenlik

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    angels_demos
    angels_demos's avatar
    Kayıt Tarihi: 03/Haziran/2006
    Erkek

    Öncelikle web sitenizde üyelerin yorum yapabileceği form yada ziyaretçi defteri hazırlayacaksanız html kodlarını pasif hale getirmeniz gerekir.Çünkü bazı denyolar js kodları sokarak saçma sapan şeyler yapabilir örn.
    alert ("bu site heyklendi") diyebilr.Bu yüzden formdan gelen bilgideki html kodlarını pasifleştireli

    KOD:
    form = TRIM(Server.HTMLEncode(request.form("form")))

    ne yaptık burda Server.HTMLEncode ile html kodlarını engelledik TRIM ile de forumun sağındaki ve solundaki boşlukları temizledik.
    Bu yolu replance kullanarakya yapabiliriz o da $öyle olucak

    KOD:
    form = replace(form, "<", "& lt;")
    form = replace(form, ">", "& qt;")

    burda ise < ve > karakterlerini engelledik bunu daha da genişletebiliriz örn <script> engelleyebiliriz.
    Başka bir yöntem ise yine replance kullanarak bir function yazmaktır

     KOD:
    Function  cevir(form)
    form =  Replace(form,"<","& lt;", 1, -1)
    form =  Replace(form,">","& qt;", 1, -1)
    cevir = form
    End  Function
    form = cevir(request.form("form"))

    örenkeleri çoğaltabiliriz tabi değerleri boşa da eştitleyebiliriz.Anladınz sanırım.

    Bir de sql injeksiyon açıkları var.Giriş formuna 'or' yazarak giriş yapabiliriz bunu da replance veya function ile ' karakterini engelleyerek yapabiliriz.$öyle olucak ;


    KOD:
    form = replace(form, "'", "")

    burda ' karakterini boşa eşitledik yani 'or' yazınca bize or diye gelecek.Eğer bir giriş formu hazırlıyorsanız = yerine <> karakterini kullanmanızı tavsiye ederim
    a=b  >>> burda a b ye eşittir deriz
    a<>b >>> burda ise a b ye eşit değilmidir deriz.
    o zaman a=b eşit not a<>b olur
    Örn.

    KOD:
    a=1
    b=2
    if a=b then
    response.write "a ve b eşitttir"
    elseif not a<>b then
    response.write "a ve b eşittir"
    end if

    yukarıda anlattığım gibi a=b ve not a<>b eşittir. (İF ELSE olayını bilmeyenler forumda arama yapsınlar yine floxxy nin yaptıqı beyaz tahribat projesi içinde bir döküman var )

    Siz bir querystring'i işlettiğiniz sayfada aldığınız querystring'i kontrol etmezseniz ve kişi '; drop table tablo gibi bir komut yazarsa SQL komutumuz olmadığı halde bu kodu işletir ve o tablo'nun içindeki verilerin tamamını uçurur.
    Bu olayıda replance ile engelleyebiliriz.
    Örneğin ID no alıyorsanız kod $u $ekilde olacaktır

    KOD:
    if not ISNumeric(form) THEN
    response.end
    end if

    yani id no sayı değilse işlemi durdur dedik
    yada function kullanarak yapılmış genelde kullanılan şöyle bir şey var ;

    KOD:
    function security(data)
    data = Replace (data ,"`","",1,-1,1)
    data = Replace (data ,"=","",1,-1,1)
    data = Replace (data ,"&","",1,-1,1)
    data = Replace (data ,"%","",1,-1,1)
    data = Replace (data ,"!","",1,-1,1)
    data = Replace (data ,"#","",1,-1,1)
    data = Replace (data ,"<","",1,-1,1)
    data = Replace (data ,">","",1,-1,1)
    data = Replace (data ,"*","",1,-1,1)
    data = Replace (data ,"/","",1,-1,1)
    data = Replace (data ,"\","",1,-1,1)
    data = Replace (data ,"And","",1,-1,1)
    data = Replace (data ,"'","",1,-1,1)
    data = Replace (data ,"Chr(34)","",1,-1,1)
    data = Replace (data ,"Chr(39)","",1,-1,1)
    security=data
    end function
    form = security(request.querystring("form"))

    burda bir çok zararlı karakteri engelledik bunu da kullanabilirsiniz
    Üyelik sistemi tam olarak hazırlanmış http://www.tahribat.com/forumdisplayfolder.asp?highlight=asp%20üyelik%20sistemi&folderid=48438 sayfasını inceleyebilirsiniz.

    Benim aklıma gelenler bu kadar.Eğer aklınıza başka bir şey gelirse pm atın veya konuya cevap yazın konuyu genişletelim ;)

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

    ha birde bilmem farkettinizmi tbt'de de ' yazınca karşı tarafa " diye çıkıyor XD

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    http://www.tahribat.com/forumdisplayfolder.asp?highlight=&folderid=69522

    buraya ekleseydin keşke

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tuna
    Tuna's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    asp için güvenliği sağlamak nisbeten kolay.

    bana kalırsanız, javascriptte güvenliği sağlamak üzerine duralım.

    günümüzde bircok sitede tonca javascript kullanılıyor.

    bunların cogunun ne gibi dındınılara sebebiyet vereceği hakkında bilgimiz çok az.

    konu hakkında bilgisi olanlar paylaşırsa güzel olur.

     

    örn: son zamanlarda kafama takılan bir olay.

    ajax kullanıyorum ve veriyi sayfalara ayırmışım, ve bunları javascript:Veriler(1) sayfa javascript:Veriler(2) sayfa diye çağırıyorum.

    sorun şurda başlıyor: javascript:veriler(alert('hede hödöö'))

     

    bi örnekte burdan vereyim.

    mesela;

    javascript:prompt(location.href('index.asp?hodudukbududukk'),'folderid=69543&sayfa=1#682597') gibi;

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    angels_demos
    angels_demos's avatar
    Kayıt Tarihi: 03/Haziran/2006
    Erkek

    kesinlikle :) js de baya bi kasman lazım ayrıca açık kaynak kodu olduqundan daha da zorlaşıyor

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    angels_demos
    angels_demos's avatar
    Kayıt Tarihi: 03/Haziran/2006
    Erkek

    Bir de mdb'ye üyelerinizin veya kendi admin panel $ifrenizi md5 sha264 vb. algoritmalar ile $ifreleyebilirsiniz.Bu sayede db'yi indirseler bile biraz uqraştırıcaz eğer 7-8 haneden fazlaysa baya bi uqraşıcaklardır.gerekli bilgiye : http://www.tahribat.com/forumdisplayfolder.asp?highlight=md5&folderid=46483 adresinden ula$abilirsiniz

    ayrıca sayfalara örneğin arama giriş formu vb. gibi yerlere flood koyabilirsiniz.
    Örn. formun bulunduğu sayfaya şu kodları ekleyelim

    Kod:
    session("zaman" )=now( )
    if session("gonderim" )="" then
    session("gonderim" ) = 1
    else
    session("gonderim" ) = session("gonderim" ) + 1
    end if

    Burada session kullandık bilmeyenler Foxxly nin hazırladığı Beyaz tahribat içinde yer alan session nesnesini okuyabilirler (Link : http://www.tahribat.com/forumdisplayfolder.asp?folderid=69001 )

    Session zaman şu ana eşittledik.
    Eğer sayfaa yeni girmişse yani gönderim 0 ise 1 olsun 2 ve üstü girişinde yani bi daha giriş yapmaya çalıştığında gonderim 1 artsın dedik buraya kadar fazla bir şey yok.

    örn giris.asp kaydet.asp vs. işlemin yapıldığı sayfaya ise şunları ekleyelim

    Kod:
    deger = datediff("s",session("zaman" ),now )
    If session("gonderim" ) > 5 AND DEGER < 60 then
    Response.write 60-deger & " sn. bekle. dolaş gel XD"
    Else
    'İşlemler olsun burdada
    end if

    Burda da 60 sn. içinde 5 kere giriş yaptıysa 60 sn. bekletiyorz XDXD

    Neyse bir de Proxy olayı var.Giriş için proxy yi engellemek isterseniz de $öyle yapın

    Kod:
    orjip = Request.serverVariables("REMOTE_ADDR") 'sizin ipniz
    proxip = Request.ServerVariables("HTTP_VIA") 'proxy ipniz
    'o zaman şöyle yapalm XD
    if orjip<>proxip then
    'Site içeriği
    else
    response.write "proxy haa Xd"
    end if

    veya orjip=proxip de diyebilirdiniz o da şöyle olurdu

    Kod:
    orjip = Request.serverVariables("REMOTE_ADDR") 'sizin ipniz
    proxip = Request.ServerVariables("HTTP_VIA") 'proxy ipniz
    'o zaman şöyle yapalm XD
    if orjip=proxip then
    response.write "proxy haa Xd"
    end if

Toplam Hit: 972 Toplam Mesaj: 6