• 01-05-2009, 11:23:31
    #1
    Üyeliği durduruldu
    "Eski dökümanlarımın içinde bulduğum çeviri bir döküman. Belki aradan geçen süre zarfında bazı anlatılan noktalar geçersizdir fakat yine de işinize yarabileceğini düşündüm."

    Bazi internet kullanıcıları , Database de kayıtlı bilgilerinizi öğreme veya sitenize zarar verme girişiminde bulunabilirler. Bu girişimleri bir nebze olsun engellemek için kullandığınız ASP scriptlerinde bazı noktaları güçlendirerek, Sisteme girişlerini engellemiş olabilirsiniz. Kullanıcılar genellikle; Sisteme karışık bilgiler girerek sistemi yorma ve açık yaratmaktan ibarettir. Bu doküman kısas olarak bu saldırılardan nasıl korunacağınızı anlatıyor.

    Request Method Kullanımı

    Bazı programcılar script yazımında Request() komutunu kullanırlar ama bu güvenli bir yöntem değildir. Güvenli olmasını sağlamak için REQUEST_METHOD komutunu kullanabiliriz. Bu komut sadece;

    · ServerVariables

    · QueryString

    · Form

    · Cookie

    · ClientCertificate

    Nesneleri ile kullanılabilir.

    Herhangi bir form kullanımında kullanılan “Hidden” yani gizli bilgiler, başkaları tarafından değiştirilerek kullanılabilir. Bazı acemileri kandırmak içinse GET yerine POST kullanarak formları taşıyabiliriz, ama bunu da sezen kullanıcılar mutlaka olacaktır. Bu nedenle kısa bir örnek kod vermek istedim.

    Form Sayfası

    <form method=”POST” action=”processform.asp”>
    <input type=”hidden” name=”uyeid=”<%=Rs(”uyeid”)%>”>
    Yeni Mail : <input type=”text” name=”Email”>
    <input type=”submit”>
    </form>

    Processform.asp

    strUyeId = Request.Form(”uyeid”)
    strYeniMail = Request.Form(”Email”)

    Buraya kadar gayet güzel ama form sayfasındaki gizli alanı alan kullanıcı bu kodları alıp da HTML derleyicisi kullanarak kendine göre değiştirip istediği bilgiyi sizin processform.asp dosyasına gönderebilir. Ama bunu da engellemek için “REQUEST_METHOD”. komutunu kullanacağız. Kullanmamızda ki amaç ise kullanıcının bize gönderdiği bilgiler GET şeklinde gönderirse işlemi durdurmaktır.

    Bu komut Request.ServerVariables() standartlarında kullanılır.

    If Request.ServerVariables(”REQUEST_METHOD”) <> “POST” Then
    Response.End
    End If

    Bu kod; Eğer gelen bilgiler “POST” komutu ile geliyorsa devam et, gelmiyorsa işlemi durdur, anlamına geliyor.

    Check Referer (Gönderen kontrolü)

    Çoğumuz Mynet ve Domaindlx gibi hostlarda kullanılan dosyaları başka bir adresten neden ulaşılamadığını merak ediyoruz, Bu sadece birkaç kod dizisinden ibaret olduğunu öğrenince içim rahatladı. Burada kullanılan ise http protokolünü yeterli seviyede kullanmaktır.

    HTTP_REFERER sayfanıza nerden gelindiğini anlatan bir ASP nesnesidir. Bu nesne ile REQUEST_METHOD birbirine yakın nesnelerdir. Şimdi yazacağımız kod dizisi ise, FORM ve QueryString nesneleri gelen bilgilerin kendi alan adınızdan mı yoksa başka bir alan adından mı geldiğini kontrol edecektir.

    Public Function CheckReferer()

    On Error Resume Next

    Dim strHost, strReferer, blnCheckReferer

    strHost = Request.ServerVariables(”HTTP_HOST”)
    strReferer = Request.ServerVariables(”HTTP_REFERER”)

    strReferer = Right(strReferer, Len(strReferer) - (InStr(1, strReferer, “://”) + 2))
    strReferer = Left(strReferer, InStr(1, strReferer, “/”) - 1)

    If strReferer = strHost Then
    blnCheckReferer = True
    Else
  • 02-05-2009, 02:29:43
    #2
    gerçekten cok hos olmus. ama bence bunları o kadar abartmaya gerek yok. eger bi uyelık sıstemınız varsa function ve session kullanmanınız yeterlidir.. güvenlık kısmında aklınıza gelmeyecek kadar güvenlik sistemi kurulabılır mesela ben sıtelerımdekı mesajlasma sıstemlerınde gelen mesajlar da mesaj sil kısmını form method post olayı ıle yapiorum mesaj oku kısmındakı id=85 ise ben bu sayıyı bi sayıyla carpip işte stabil bi sayi ile toplayıp id kısmını id=546495612 gibi bi sayıya tekamül getirerek ve sorgu sayfasında denklemını kurarak db de kı ıd se ulasırım. güvenlık sıstemı yapacagınız sitelere göre degismelidir bence..