PHP SQL Injection Açığını Kapatın !

sestasarim Özgür Sürme

Get ile gelen bütün verileri kontrol eder ve $inj arrayındakiler var mı yok mu kontrol ediyor

Her sayfanın başına veya her sayfaya include ettiğiniz bir php bağlan dosyası fln vardır o şekilde kullanabilirsiniz

 


// #### PHP SQL Injection Açığı Kapatma ####

$inj = array ('select', 'insert', 'delete', 'update', 'drop table', 'union', 'null', 'SELECT', 'INSERT', 'DELETE', 'UPDATE', 'DROP TABLE', 'UNION', 'NULL','order by','order  by');
for ($i = 0; $i < sizeof ($_GET); ++$i){ for ($j = 0; $j < sizeof ($inj); ++$j){ foreach($_GET as $gets){ if(preg_match ('/' . $inj[$j] . '/', $gets)){ $temp = key ($_GET); $_GET[$temp] = '';
exit;
continue;
}
}
}
}


Güle güle kullanın gaayet sağlam bir fonksiyondur. Sorun yaşatmaz smiley

14-08-2013 19:03 Edit:14-08-2013 19:06

    Php

    alicilin Ali Fırat Güler

    ' ve " karakterlerini düzgün filtreledikten sonra hayatta sorun çıkmaz. bu fonksiyon çok mantıksız. sebebine gelince.;

    ınsert ınto zart zurt values ('veri burayaa') buraya bu şekilde veri girerken '  bu verideki ' karakterini \' bu hale dönüştürdüyseniz hiç problem kalmamış dmeektir. çünki ' bu tırnaklar arasına ne yazarsanız yazın sql bunu sting ten başka bişey görmeyecektir'

     

    Bu yüzden verdiğiniz fonksiyonu kullanırsam ve bunu blogumda kullandığımı varsayarsam;

    "select union all" isimli bir makale açıcak olursam verdiğiniz fonksiyon hepsini engellemişi olucaktır.

     

    Bu fkirde burda çöker.

    14-08-2013 23:19

      Php

      phpde sql injection  guvenligi icin bir cok  yontem mevcut sadece addslashes  komutu bile  yeterli olabiliyor bu gereksiz ve sacma bir fonksiyon olmus   alicilin hocamda  cok guzel bir acıklama yapmıs

       php de  veri  guvenligi icin html specials chars addslashes stripslashess  gibi  bir  cok hazır fonksiyon var onlar kullanmanız isinizi gorecektir 

       hepsinden onemli bir  redirector ile   .htaccess yapılandırmanız iyi ise  in url  den     hic bir sekilde    giris yapamazlar  

      16-08-2013 15:14

        Php

        alicilin Ali Fırat Güler

        #bozkurtmanas ustam.

         

        Aslında sql deki tek  injection açığı ' ve " karakterlerinden oluşuyor hocam. Siz bu tırnak sorunundan ödün vermezseniz eğer Zaten kişi istediği kadar sql sorgusu yazsın. Her halukarda yazılan şeyler sql tarafından string ifade olarak algılanacaktır. Ancak bu tırnaklar ile ilgili açığınız varsa ozaman ona bişey diyemicem.

        Stringler için addslashes, sayılsal değerleri içinde (int) şeklinde tür dönüşümü yaptığınız zaman asla ama asla açık vermezsiniz.

        16-08-2013 22:45 Edit:17-08-2013 04:37

          Php

          sestasarim Özgür Sürme

          yahu beyler ben burda yeni olan veya konuya tam vakıf olmuyanlar veya az olsa bilgi sahibi olmak isteyenler için yazdım siz tam saçmalamışsınız "select union all" adında makale aç da bu cümlenin anlamı biliyormusun bir makale başlığı olabilir mi ?

          bir çok açık kapatma yöntemi var bunu daha basite indirgeme için yaptım yoksa şuda olabilir 

          $duyuruno= $_GET['duyuru_no'];

           

          şeklindede olabilir

           

          $duyuruno = (int)$_GET[duyuru_no];

           

          benim orda acil durumda tek tek dosya aramadan kısadan yapabileceğin bir yöntem :))

          27-08-2013 08:48

            Php

            alicilin Ali Fırat Güler

            Saçmalamışssınız derken ? Bence ilk önce kendinize bir gelin derim size.

            Neden olmasın ? Ben blog yazıyorum diyelim. Ve "SELECT UNİON ALL" adında makale açıcam belki ? açamazmıyım ? en doğal hakkım bu benim. Kusura bakmayın ama uslubumu kabalık olmasın diye değiştirmemiştim fakat "Saçmalamışssınız" dediğinizden dolayı üslubumu değiştirerek  cevap vermek istiyorum.

            Esas saçma olan şey yazdığınız kodlardır. Açık Birşeyleri engelleyerek kapatılmaz. İyi ozaman adam ne tırnak girebilsin ne select girebilsin. açık bırakmamak istiyorsanız belirli karakterleri etkisizleştirin. komple engellemeyin.  Bu iş böyle olmaz. Bilmiyorsanızda sorun öğretelim !

             

            İkinci bir öneride kim olduğunu, ne olduğunu bilmediğiniz insalara biraz daha tertipli konuşmanız. Ben öyle yapıyorum. sizde deneyin.

            27-08-2013 11:25 Edit:27-08-2013 19:24

              sestasarim Özgür Sürme

              Bakın ben ne demişim siz ne yazmışsınız konuyu bişr baştan okurmusunuz Arkadaşım ben bir paylaşımda bir bulundum bir arkadaşımız kolay yönden veya hızlıca bir php tabanlı sitesine atak oldu bu atak için siteyi güvenli şekilde ayar.php veya config.php dosyasına bu metodu uygulayarak $_GET medotundan doğan açığını kapatması için bir uyarı ben 31 yaşındayım ve benim dediğim doğrudur demiyorum bilgisayar müh. öğrencisiyim herşeyim doğrudur mantığı olsaydı okumaya devam etmezdim benim örneğe bu tezde burda çöker demene saçmalamışsın dedim bu bir foksiyon acil durumlarda işe yarıyacak foksiyon zaten sen sitenin tabanını ingilizce de yapsan SELECT UNİON ALL  türkçe karşılığı TÜM BİRLİĞİ SEÇİMİ oluyor haa böyle konu açabilirsin ben türkiyede site açan zaten türkçe dil tabanlı olan bir sitede yazı paylaştım ben burda kimseyle yarışmaya girme veya birilerinin bilgilerini çürütme yarışında değilim usluba gelince bu kod diziminde kişiler zarara uğrucaksa haklısınız illegalite varsa haklısınız ama ufakda olsa yardım varsa takdir edicen hata varsa kibarca arkdaşım burda doğrudur ama bazı sorunlar yaratabilir bence bu örnek olmalı örneğini vericen kimsenin makalesine yazsına emeğine harcadığı zamanına hakaret etmeden bu tez burda çöker demeden yani bilgini varsa ama paylaşıcan saçmalamışsınız derken ben konudaki yorumunuza dedim kişilik karakter veya şahşi bir yorum yok yaş olarakda edep veya adap hususunda emin olunki şahsımda anormal davranışlar olmaz ben bir yazı yazdım komple hatalı bir yazı burda önemli olan paylaşım değil mi benim hatam varsa adabı ve hususlara dikkat edilerek cevap yazılmalı haa sitede yetkiniz nedir bilmiyorum bir yönetici arkadaşımız özelden veya konuya cevap yazarak derki arkadaşım yazma buraya bende üyeliğimi pasifleştiririm sorun yok yani :)) ama konuyu baştan okuyun ben ne yazmışım sizin yanıtınız ne ? ve ne alaka ?

              08-09-2013 02:34

                Yazan:alicilin

                 

                Saçmalamışssınız derken ? Bence ilk önce kendinize bir gelin derim size.

                Neden olmasın ? Ben blog yazıyorum diyelim. Ve "SELECT UNİON ALL" adında makale açıcam belki ? açamazmıyım ? en doğal hakkım bu benim. Kusura bakmayın ama uslubumu kabalık olmasın diye değiştirmemiştim fakat "Saçmalamışssınız" dediğinizden dolayı üslubumu değiştirerek  cevap vermek istiyorum.

                Esas saçma olan şey yazdığınız kodlardır. Açık Birşeyleri engelleyerek kapatılmaz. İyi ozaman adam ne tırnak girebilsin ne select girebilsin. açık bırakmamak istiyorsanız belirli karakterleri etkisizleştirin. komple engellemeyin.  Bu iş böyle olmaz. Bilmiyorsanızda sorun öğretelim !

                 

                İkinci bir öneride kim olduğunu, ne olduğunu bilmediğiniz insalara biraz daha tertipli konuşmanız. Ben öyle yapıyorum. sizde deneyin.

                 

                +100

                yazılımda  bir isin birden cok yapılıs sekli vardır o nedenle   kimsenin kimseye bu bundan iyidir  diyebilmesi icin bir test surecinden  gecirmek gerekir  alicilin hocam cok oz bir sekilde anlatmıs buradan kendisine tesekkur ediyorum

                konusma uslubunuza gelince  kendinize  ceki duzen verin  eger yazdıgınız kodların olumlu veya olumsuz  degerlendirmesini cekemeyecekseniz yazmayın bu siteye  gereksiz bilgi kirliligi yaratmayın bu sitede gercekten   birseyler ogrenmek isteyen  insanlar var onların  hevesinide kırmayın

                28-08-2013 18:52

                  sestasarim Özgür Sürme

                  Bakın ben ne demişim siz ne yazmışsınız konuyu bişr baştan okurmusunuz Arkadaşım ben bir paylaşımda bir bulundum bir arkadaşımız kolay yönden veya hızlıca bir php tabanlı sitesine atak oldu bu atak için siteyi güvenli şekilde ayar.php veya config.php dosyasına bu metodu uygulayarak $_GET medotundan doğan açığını kapatması için bir uyarı ben 31 yaşındayım ve benim dediğim doğrudur demiyorum bilgisayar müh. öğrencisiyim herşeyim doğrudur mantığı olsaydı okumaya devam etmezdim benim örneğe bu tezde burda çöker demene saçmalamışsın dedim bu bir foksiyon acil durumlarda işe yarıyacak foksiyon zaten sen sitenin tabanını ingilizce de yapsan SELECT UNİON ALL  türkçe karşılığı TÜM BİRLİĞİ SEÇİMİ oluyor haa böyle konu açabilirsin ben türkiyede site açan zaten türkçe dil tabanlı olan bir sitede yazı paylaştım ben burda kimseyle yarışmaya girme veya birilerinin bilgilerini çürütme yarışında değilim usluba gelince bu kod diziminde kişiler zarara uğrucaksa haklısınız illegalite varsa haklısınız ama ufakda olsa yardım varsa takdir edicen hata varsa kibarca arkdaşım burda doğrudur ama bazı sorunlar yaratabilir bence bu örnek olmalı örneğini vericen kimsenin makalesine yazsına emeğine harcadığı zamanına hakaret etmeden bu tez burda çöker demeden yani bilgini varsa ama paylaşıcan saçmalamışsınız derken ben konudaki yorumunuza dedim kişilik karakter veya şahşi bir yorum yok yaş olarakda edep veya adap hususunda emin olunki şahsımda anormal davranışlar olmaz ben bir yazı yazdım komple hatalı bir yazı burda önemli olan paylaşım değil mi benim hatam varsa adabı ve hususlara dikkat edilerek cevap yazılmalı haa sitede yetkiniz nedir bilmiyorum bir yönetici arkadaşımız özelden veya konuya cevap yazarak derki arkadaşım yazma buraya bende üyeliğimi pasifleştiririm sorun yok yani :)) ama konuyu baştan okuyun ben ne yazmışım sizin yanıtınız ne ? ve ne alaka ?

                  08-09-2013 02:37

                    Php

                    alicilin Ali Fırat Güler

                    Fikir yanlış. Ben o yüzden bu fikir burda çöker dedim. Çünki gerçekten öyle. ama nedense saçmalamakla suçlandım.

                    08-09-2013 11:38

                      www.Phpkodlari.com © 2009 Herkes Php öğrenecek
                      Web tasarım ve eğitim kaynağınız.