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

Bunyamin DEMIR bunyamindemir at gmail.com
Thu Sep 6 05:20:46 EDT 2007


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.owasp.org/pipermail/owasp-turkey/attachments/20070906/0c216535/attachment.html 


More information about the Owasp-turkey mailing list