[Owasp-turkey] SQL Injection'dan kaçmak.

Oguzhan YILMAZ aspsrc at gmail.com
Thu Sep 6 06:18:34 EDT 2007


Valide derken, örneğin: kullanıcı telefon numarası giriyosa hakkatten
telefon numarası girmişmi. istenilen desendemi girilmiş gibi...
Gerçi validate ederken ' larıda kontrol ediyor ama :) esas amacı veri
bütünlüğünün sağlanması.

Bir kaç projede hem parametrize hemde  sql sorgularını fonksiyona dayalı
validate ettiriyordum tabi bunun gereksiz olduğunu daha sonra öğrendim :o)

Ben projelerimde hiç ORM kullanmadım. ama bundan sonra kesinlikle
kullanıcam.

Saygılar herkese kolay gelsin...

2007/9/6, Ferruh Mavituna <ferruh at mavituna.com>:
>
> Cok pratik ORM cozumleri var kucuk buyuk her projeye gidecek sekilde.
> Bence ORM hem guvenlik hem de yapi acisindan hemen hemen her proje icin
> mantikli.
>
> Datalari kontrol konusunda benim fikrim datayi dbye almadan once
> gerekliligini kabul etmek. Eger sistemde kullanici adlari 20 karakterden
> kisa ve icerlerinde sadece a-z bulunabiliyorsa bunu almadan once kontrol
> etmek bence iyi bir fikir. Hem guvenlik hem de sistemin guzelligi acisindan.
>
>
> Onun harici sadece SQL Injection icin kontrol ediliyorsa parameterized
> query lerde bence de boyle bir seye gerek yok.
>
> On 06/09/07, Bunyamin DEMIR <bunyamindemir at gmail.com> wrote:
> >
> > Merhabalar,
> >
> > Parametrize mekanizmasını kullandıktan sonra sql e gelen inputları bir
> > daha validate etmenin bir anlamı olur mu acaba?
> >
> > Bana fazladan bir yük gibi geliyor.  Tecrübe edinen oldu mu?
> >
> >
> > Saygılar,
> >
> >
> >
> > 2007/9/6, Oguzhan YILMAZ <aspsrc at gmail.com>:
> > >
> > > Hm! Sanırım geniş çaplı proejler için en ideal ORM frameworkleri
> > > kullanmak. Orta ölçekli projelerde ise ki  (ise ile ki böyle kullanılmaz
> > > herhalde :o) ) çok sql işlemi olmayan, parameterized tekniğini kullanmak.
> > >
> > > Bende genelde gelen parametreleri validate ettikten sonra aşağıdaki
> > > gibi bir parametrize sorguları tercih ediyorum.
> > >
> > > private System.Data.OleDb.OleDbCommand[] _commandCollection;
> > >  private void InitCommandCollection() {
> > >             this._commandCollection = new
> > > System.Data.SqlClient.SqlCommand[1];
> > >             this._commandCollection[0] = new
> > > System.Data.SqlClient.SqlCommand();
> > >             this._commandCollection[0].Connection = this.Connection;
> > >             this._commandCollection[0].CommandText = @"SELECT a,b,c
> > > FROM HOPPA WHERE [email protected] AND [email protected]";
> > >             this._commandCollection[0].CommandType =
> > > System.Data.CommandType.Text;
> > >             this._commandCollection[0].Parameters.Add(new
> > > System.Data.SqlClient.SqlParameter("@Param1",
> > > System.Data.SqlDbType.VarChar , 1024));
> > >             this._commandCollection[0].Parameters.Add(new
> > > System.Data.SqlClient.SqlParameter("@Param2",
> > > System.Data.SqlDbType.VarChar, 35));
> > >         }
> > >
> > > En nihayetinde bundan kaçmak o kadar zor bişi değil sanırım...
> > >
> > > 2007/9/6, Ferruh Mavituna <ferruh at mavituna.com>:
> > > >
> > > >
> > > > Guzel bir ornekmis, biraz da ilginc geldi. Yarisinda kullanip
> > > > yarisinda kullanmamak :)
> > > >
> > > > On 06/09/07, Bedirhan Urgun < urgunb at hotmail.com> wrote:
> > > > >
> > > > >
> > > > > Ferruh iyilesmis anlasilan. :)
> > > > > Bahsettigi %0.01 ile alakali 3-4 gun once karsilastigim bir kod
> > > > > (bir Java metodu. Yorumlarim asagida);
> > > > >
> > > > > /*=======================*/
> > > > > public boolean XXXIptalSorgu() throws FileNotFoundException,
> > > > > IOException {
> > > > >
> > > > >         StringBuffer sb = new StringBuffer();
> > > > >         PreparedStatement stmt = null;
> > > > >         ResultSet rset = null;
> > > > >         try {
> > > > >             connCA = utils.getCADBConnection(altkokno);
> > > > >
> > > > >             stmt = connCA.prepareStatement("SELECT
> > > > > Z_NO,ISIM,EMAIL,K_NO FROM KULLANICI_KIMLIKLERI WHERE ((K_NO LIKE '%" +
> > > > >                                            *kno* + "%') AND
> > > > > (DURUM=?))");
> > > > >             stmt.setInt(1, ZConstants.K_GECERLI); // DURUM GECERLI
> > > > > OLAN
> > > > >             rset = stmt.executeQuery();
> > > > >
> > > > >             this.iptalSorguSonucu = gecerliXXXTablosu(rset);
> > > > >
> > > > >             return true;
> > > > >
> > > > >         }
> > > > >         catch (SQLException e) {
> > > > >             this.hataMesaji = "Hata: " + e + "<br>\n";
> > > > >             return false;
> > > > >         }
> > > > >
> > > > >         finally {
> > > > >             try {
> > > > >                 if (rset != null) {
> > > > >                     rset.close();
> > > > >                 }
> > > > >                 if (stmt != null) {
> > > > >                     stmt.close();
> > > > >                 }
> > > > >             }
> > > > >             catch (SQLException ignored) {}
> > > > >         }
> > > > >     }
> > > > > /*=======================*/
> > > > >
> > > > > Parameterized Query kullanilmis, ama bi parametre (*kno *) icin
> > > > > kullanilmamis (artik unutulmus mu, yoksa "*sql* *like" *icin
> > > > > kullanamayiz mi denmis bilmiyorum).
> > > > >
> > > > > Not: Tabi bunun sql exploit'inde de bi soru isaretli
> > > > > parametre kullanmak gerekebilir (exploit dizgisine gore), yoksa "missing
> > > > > parameter" sql hatasi alinir
> > > > >
> > > > > bedirhan
> > > > >
> > > > >  ------------------------------
> > > > > Date: Thu, 6 Sep 2007 08:27:26 +0100
> > > > > From: ferruh at mavituna.com
> > > > > To: aspsrc at gmail.com
> > > > > CC: owasp-turkey at lists.owasp.org
> > > > > Subject: Re: [Owasp-turkey] SQL Injection'dan kaçmak.
> > > > >
> > > > > Merhaba,
> > > > >
> > > > > SQL Injection icin en iyi korunma yontemi bir nedenini anlamak ve
> > > > > ona gore kodlamak, iki "parameterized query" ler kullanmak.
> > > > >
> > > > > Hemen hemen tum modern web dilleri ve DB API lari bunlari
> > > > > destekliyor. Dolayisiyla eger her turlu veritabani baglantisini
> > > > > parameterized query ler ile yaparsaniz ve db tarafinda stored procedure vb.
> > > > > yazarken gene benzer cozumler kullanirsaniz SQL Injection a karsi %99.99
> > > > > korunmus olacaksinizdir.
> > > > >
> > > > > %0.01 de su an aklima gelmeyen ama belki de orada bir yerde olan
> > > > > tuhaf bir SQL Injection sorunudur :)
> > > > >
> > > > > On 05/09/07, *Oguzhan YILMAZ* < aspsrc at gmail.com> wrote:
> > > > >
> > > > > Merhaba,
> > > > > Madem konu SQL injection.  Bundan korunmak için geliştirmemiz
> > > > > gereken foksiyonlar nasıl olmalıdır? (Herhangi bir script ve programlama
> > > > > dili olarak)
> > > > >
> > > > > En basitinden gelen ataktaki string den  ( ' ) tırnakları Replace
> > > > > etmek, CHR() ve sql cümlelerini algılayıp değiştirmek, yada buna benzer
> > > > > kural bazlı çözümler yeterlimidir? yoksa daha komplike şeyler de
> > > > > gereklimidir?
> > > > >
> > > > > Gerçi konu webgüvenliği ama windows uygulamalarında yada başka bir
> > > > > platformda config (örneğin config.xlm) dosyaları içinden sql
> > > > > injection mümkün olabiliyor. Aynı şekilde başka bir injection ile uygulamaya
> > > > > saldırı olabilirmi?
> > > > >
> > > > >
> > > > > --
> > > > > Oğuzhan
> > > > > _______________________________________________
> > > > > Owasp-turkey mailing list
> > > > > Owasp-turkey at lists.owasp.org
> > > > > https://lists.owasp.org/mailman/listinfo/owasp-turkey
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Ferruh Mavituna
> > > > > http://ferruh.mavituna.com
> > > > >
> > > > >
> > > > > ------------------------------
> > > > > Connect to the next generation of MSN Messenger  Get it now!
> > > > > <http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline>
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Ferruh Mavituna
> > > > http://ferruh.mavituna.com
> > > >
> > >
> > >
> > >
> > > --
> > > Oğuzhan
> > > _______________________________________________
> > > Owasp-turkey mailing list
> > > Owasp-turkey at lists.owasp.org
> > > https://lists.owasp.org/mailman/listinfo/owasp-turkey
> > >
> > >
> >
> >
> > --
> > Bunyamin Demir
> > OWASP-Turkey Chair
> > http://www.webguvenligi.org
> > _______________________________________________
> > Owasp-turkey mailing list
> > Owasp-turkey at lists.owasp.org
> > https://lists.owasp.org/mailman/listinfo/owasp-turkey
> >
> >
>
>
> --
> Ferruh Mavituna
> http://ferruh.mavituna.com
>



-- 
Oğuzhan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.owasp.org/pipermail/owasp-turkey/attachments/20070906/c87a7dbd/attachment-0001.html 


More information about the Owasp-turkey mailing list