SQL Injection"Dan Korunma

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

    Gelen verilerdeki zararlı kodları temizleyerek SQL Injection'dan korunma

    1. <% 
    2. Function Temizle(strVeri) 
    3. '|====================================== 
    4. '| SQL Injection'dan Korunma Fonksiyonu 
    5. '| mydesign a.k.a doronty37 
    6. '| http://www.mydesign.gen.tr 
    7. '| mydesign@mydesign.gen.tr 
    8. '|====================================== 
    9.       '// Eğer Değişken Boşsa Fonksiyondan Çıkılıyor 
    10.      If strVeri = "" Then Exit Function 
    11.       '// Zararlı Kodlar Burada Ayıklanıyor 
    12.      strVeri = Replace(strVeri, "<", "&lt;") 
    13.      strVeri = Replace(strVeri, ">", "&gt;") 
    14.      strVeri = Replace(strVeri, "[", "&#091;") 
    15.      strVeri = Replace(strVeri, "]", "&#093;") 
    16.      strVeri = Replace(strVeri, """", "", 1, -1, 1) 
    17.      strVeri = Replace(strVeri, "=", "&#061;", 1, -1, 1) 
    18.      strVeri = Replace(strVeri, "'", "''", 1, -1, 1) 
    19.      strVeri = Replace(strVeri, "select", "sel&#101;ct", 1, -1, 1) 
    20.      strVeri = Replace(strVeri, "join", "jo&#105;n", 1, -1, 1) 
    21.      strVeri = Replace(strVeri, "union", "un&#105;on", 1, -1, 1) 
    22.      strVeri = Replace(strVeri, "where", "wh&#101;re", 1, -1, 1) 
    23.      strVeri = Replace(strVeri, "insert", "ins&#101;rt", 1, -1, 1) 
    24.      strVeri = Replace(strVeri, "delete", "del&#101;te", 1, -1, 1) 
    25.      strVeri = Replace(strVeri, "update", "up&#100;ate", 1, -1, 1) 
    26.      strVeri = Replace(strVeri, "like", "lik&#101;", 1, -1, 1) 
    27.      strVeri = Replace(strVeri, "drop", "dro&#112;", 1, -1, 1) 
    28.      strVeri = Replace(strVeri, "create", "cr&#101;ate", 1, -1, 1) 
    29.      strVeri = Replace(strVeri, "modify", "mod&#105;fy", 1, -1, 1) 
    30.      strVeri = Replace(strVeri, "rename", "ren&#097;me", 1, -1, 1) 
    31.      strVeri = Replace(strVeri, "alter", "alt&#101;r", 1, -1, 1) 
    32.      strVeri = Replace(strVeri, "cast", "ca&#115;t", 1, -1, 1) 
    33.      Temizle = strVeri 
    34. End Function 
    35. %> 
    36. Kullanımı: 
    37. <% strParola = Temizle(Trim(Request.Form("parola"))) %>
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ArmadA
    ArmadA's avatar
    Kayıt Tarihi: 08/Ekim/2005
    Erkek
    nre yani bu kadar kısa kodu yazıoz attack lardan korunuyoruz öylemi ?

    Living Death
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ArmadA
    ArmadA's avatar
    Kayıt Tarihi: 08/Ekim/2005
    Erkek
    -------------------------------------------------------------------------------------------------
    #
    Konu : Xss ve SQL Injection Ataklarından Korunma
    Tarih : 22/04/2007
    Saat : 03:34
    Yazar : Ibrahim BALIÇ
    #
    -------------------------------------------------------------------------------------------------

    İçerik :

    1.Giriş
    2.Xss ve Sql'e Bakış
    3.Korunma
    4.Çıkış

    =================================================================================================

    [1.Giriş]
    '''''''''
    -------------------------------------------------------------------------------------------------

    Sql Injection Ve Xss Ataklarını Bir Önceki Derslerimizde Anlatmıştım...Şimdiki Konuda Bun
    lardan Nasıl Korunacağımıza Göz Atacağız. Bu Konuyu Okumadan Önce

    Sql Injection Nedir?
    Xss Nedir?

    Konularını Okumanızı, Örnekleri Incelemenizi Mutlak Tavsiye Ederim. Girişi Fazla Uzatmadan Şimdi
    Konumuza Dönelim...

    [2.Xss Ve Sql'e Bakış]
    -------------------------------------------------------------------------------------------------

    Her Iki Atak Türününde Uygulanması, Dışarıdan Eklenen Kodlar Ile Olduğunu Önceki Konuları
    mızda Belirttik.Ve Uygulamalı Olarak Inceledik. Şimdi Buradan Yola Cikarak Nasil Korunacağımıza
    Bakacağız.

    SQL Injection İçin : ' Karakteri.
    Xss Icın : < ; : ( ) Karakterleri.

    Bu Karakterler Sql'de ve html'de İşlevi Olan Karakterlerdir. Biz Bu Atak Türlerine Engel Olabilm
    ek İçin Bu Karakterleri Tüm Gelen Veriler İçerisinde Kontrol Etmeliyiz. Ve Daha Sonra Script İçe
    risinde Kullanmalıyız.
    Bu Karakterleri Gelen Datalar İçerisinde Var Olup Olmadiklarini Kontrol Edip , Daha Sonraa İşlem
    Yaptırırsak Korunmuş Oluruz.

    [3.Korunma]
    -------------------------------------------------------------------------------------------------

    Genel Olarak Asp ve Php Dillerinden Yola Cikarak Bu Atakları Blocklama Yollarını Acıklaya
    cağım.Burada Ek Olarak "Tsm Atak Block" Modulunude Örnekle Tanımış Olup,Kullanımı Hakkında Bilgi
    sahibi Olacaksınız...
    Genel Bir Asp Dosyası İçerinde Yapılacak Kontrol.

    Burada Tümünde:
    adi, soyadi Değişkenlerinin olduğunu varsayiyorum.

    Asp:
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    =================================================================================================
    <%

    adi = Request.QueryString("adi")
    soyadi = Request.QueryString("soyadi")

    adi = replace(adi,"'","")
    adi = replace(adi,"(","")
    adi = replace(adi,")","")
    adi = replace(adi,";","")
    adi = replace(adi,":","")
    adi = replace(adi,"<","")

    soyadi = replace(soyadi,"'","")
    soyadi = replace(soyadi,"(","")
    soyadi = replace(soyadi,")","")
    soyadi = replace(soyadi,";","")
    soyadi = replace(soyadi,":","")
    soyadi = replace(soyadi,"<","")

    reponse.write adi & "<br>" & soyadi

    ?>
    =================================================================================================
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    Şeklindeki Bir Asp Dosyasına, Adi Olarak Yollanacak Değer Alttaki Gibi Olursa:

    test.asp?adi=ibrahim<script>alert('test');</script>

    Çıktısı Şu Şekli Alacaktır.

    --------------------------------
    ibrahimscript>alerttest/script>
    ---------------------------------

    yani Burada Yaptiğimiz replace(değiştirme) İşleminde Görmüş Olduğunuz Gibi ',<,;,:,(,) Karakterl
    erini boş olarak değiştirdi.Eğer Böyle Bir İşlem Yapmiş Olmasaydik ( değiştirme ) Çıktı Şu Şekil
    de Olacaktı.

    --------------------------------
    ibrahim<script>alert('test');</script>
    ---------------------------------
    Buda Script Tarafından script tagindan Yorumlanarak, Size Uyarı Mesaji Verecekti. Yani Burada Uy
    arı Yerine, Xss ve Sniffer Derslerimizde Gördüğümüz Gibi Dilediğimiz Scripti Caliştirmak Müm kün
    Olurdu...

    Şimdi Php İle BUnları Nasil Yapacağımıza Bakalım...

    PHP
    #################################################################################################
    =================================================================================================
    <?PHP

    $adi = $_GET["adi"];
    $soyadi = $_GET["soyadi"];

    $adi = str_replace("'","",$adi);
    $adi = str_replace("(","",$adi);
    $adi = str_replace(")","",$adi);
    $adi = str_replace(";","",$adi);
    $adi = str_replace(":","",$adi);
    $adi = str_replace("<","",$adi);

    $soyadi = str_replace("'","",$soyadi);
    $soyadi = str_replace("(","",$soyadi);
    $soyadi = str_replace(")","",$soyadi);
    $soyadi = str_replace(";","",$soyadi);
    $soyadi = str_replace(":","",$soyadi);
    $soyadi = str_replace("<","",$soyadi);

    echo $adi."<br>".$soyadi;

    ?>
    =================================================================================================
    #################################################################################################

    Şeklindeki Bir PHP Dosyasına, Adi Olarak Yollanacak Değer Alttaki Gibi Olursa:

    test.php?adi=ibrahim<script>alert('test');</script>

    Çıktısı Şu Şekli Alacaktır.

    --------------------------------
    ibrahimscript>alerttest/script>
    ---------------------------------

    yani Burada Yaptiğimiz str_replace(string değiştirme) İşleminde Görmüş Olduğunuz Gibi ',<,;,:,(,)
    Karakterlerini boş olarak değiştirdi.Eğer Böyle Bir İşlem Yapmiş Olmasaydik ( değiştirme ) Çıktı
    Şu Şekilde Olacaktı.

    --------------------------------
    ibrahim<script>alert('test');</script>
    ---------------------------------

    Buda Script Tarafından script tagindan Yorumlanarak, Size Uyarı Mesaji Verecekti. Yani Burada Uy
    arı Yerine , Xss ve Sniffer Derslerimizde Gördüğümüz Gibi Dilediğimiz Scripti Caliştirmak Mümkün
    Olurdu...

    Şimdi Php Dosyalarımız İçin Ek Olarak Bir Bilgi Vermek Gerekirse, Sunucu Üzerindeki Konfürigrasy
    onda php.ini içerisinde

    magic_quotes_sybase = On

    ve

    magic_quotes_runtime = on

    Şeklinde Ise, ' Karakteri Zaten Etkisiz Kalacaktır. Php "\" Kapaniş Karakteri Her ' Karakterini
    Kendisiyle Birlikte Replace Edecektir. Fakat Bu Xss İçin Bi Engel Değildir.Ve Genel Anlamda Ser
    ver Sahibi Bazı Scriptlerin Hatasız Calişması İçin Acmış Olabilir.

    Biz Her İhtimale Karşılık Olarak Bu Kontrolleri Yaptirmalıyız.Bu Her Değişken İçin Çok Uzun Sür
    ebilir. veya Çok Kod Demektir.Biz Sizler İçin Bir Modul Hazırladık, Bunu Kullanmış Olduğunuz Se
    rver'a register Ettirip Ücretsiz Olarak Kullanabilirsiniz.

    Register Edilmiş Server Üzerinde "TSM Atak Block" Nasıl Kullanılır Şimdi Buna Göz Atalım...


    ASP
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    =================================================================================================
    <%
    adi = Request.QueryString("adi")
    soyadi = Request.QueryString("soyadi")
    set Kontrol = CreateObject("TsmAtak.Block")

    reponse.write Kontrol.GelenKontrol(adi) & "<br>" & Kontrol.GelenKontrol(soyadi)

    %>
    =================================================================================================
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    Modulumuzu Script İçinde Tanimlayip, Tüm İcerideki Değişkenleri Modul İçinde Filtre Ederek
    Tüm Gelen Verileri Kontrol Ettirebilirsiniz.Bu Hem Az Kod Hemde Daha İyi Bir Güvenlik Demektir.
    Yukarıdaki İlk Örneğimizdeki Kod Satır Sayısı İle Modul Filtredeki Kod Satır Sayısı Arasındaki Fa
    rkı Görmüş Olmalısını...
    Şimdi birde Php İçin Örneğimize Bakalım.


    #################################################################################################
    =================================================================================================
    <?php
    $adi = $_GET["adi"];
    $soyadi = $_GET["soyadi"];
    $kontrol = new COM("TSMAtak.Block");


    echo $kontrol->GelenKontrol($adi)."<br>".$kontrol->GelenKontrol($soyadi);

    ?>
    =================================================================================================
    #################################################################################################

    =================================================================================================
    ######## BİTİŞ ########
    Konu Hakkindaki Örnekler ve Modul Alttaki Adrese Göz Atabilirsiniz:

    http://www.turksecuritymaster.com/security/Turkish/dersler/uygulamalar/genel/SqliveXssKorunmaYollari
    -------------------------------------------------------------------------------------------------
    Bu Ders Ibrahim BALIÇ Tarafından www.turksecuritymaster.com Kullanıcıları İçin Yazılmıştır.
    Gerekli Modul TSM Güvenlik Programlama Grubu Tarafından Geliştirilmiştir.

    ========================
    Ibrahim BALIÇ
    TSM Security Programmer.
    ========================

    Living Death
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Musket
    Musket's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 09/Haziran/2002
    Erkek

    Attacklardan korumuyor aslında.

    sadece işaretleri değiştiriyor. Boylece injection yapılamıyor. 

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    r3dros
    r3dros's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek
    ArmadA bunu yazdı:
    -----------------------------
    nre yani bu kadar kısa kodu yazıoz attack lardan korunuyoruz öylemi ?
    -----------------------------
    En azından yeni türüyen lamerlerden En gellenmiş olur.. )))
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ArmadA
    ArmadA's avatar
    Kayıt Tarihi: 08/Ekim/2005
    Erkek
    tmm hacı anladım bende dün şu yukarıdaki uzun yazıyı bi yerde görmüştüm aldıydım lazım olur die sen konu açmışın madem bende yapıştırıverdim :D

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

    Kaynak site arkadaşlar kodlarda belki eksiklik ola bilir..

    http://www.mydesign.gen.tr/kod/189.html

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    PirtakoZ
    PirtakoZ's avatar
    Kayıt Tarihi: 14/Eylül/2007
    Erkek

    Yuh be abi php ile bu kadar kasmanın ne alemi var :D

     <?php

    $degisken = htmlspecialchars($degisken); // Html taglarını dönüştürür...

    $degisken = addslashes($degisken); // özel karakterlere slash ekler.

    ?>

    Aha bu kadar  :D


    Yoksulluk korkusu ile ömrü servet peşinde harcayanda gördüm fakirliğin özünü...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    amele_2
    amele_2's avatar
    Kayıt Tarihi: 01/Eylül/2005
    Erkek

    2. yöntemle sadece tagları sildirmiş

    bi encode yaptın mı yine yalama olcak?

    kaldı ki

    1. yöntemde de sanki öyleymiş gibi algıladım

    mallık bende olabilir bok atmiim :)) 


    Ardından yüz köpek havlamayan kurt, kurt sayılmaz..
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Rawkmetal
    Rawkmetal's avatar
    Kayıt Tarihi: 16/Şubat/2005
    Erkek

    aslında bizdede var öle kısa bir kod
    <%Server.HtmlEncode("<script>")%> , <%Server.UrlEncode("<script>")%> gibi
    ArmadA
    yazı için saol okumakta fayda var


    dünya yan geldi. dalganıza bakın...
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    K4R4B4S4N
    K4R4B4S4N's avatar
    Kayıt Tarihi: 01/Eylül/2005
    Erkek
    amele_2 bunu yazdı:
    -----------------------------

    2. yöntemle sadece tagları sildirmiş

    bi encode yaptın mı yine yalama olcak?

    kaldı ki

    1. yöntemde de sanki öyleymiş gibi algıladım

    mallık bende olabilir bok atmiim :))


    -----------------------------

     

    senin düşündüğünü düşünen adam zaten bununla pek uğraşmaz hacı:D 

Toplam Hit: 4118 Toplam Mesaj: 13