PHP SQL Injection Açığını Kapatın !.
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
Php
' 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.
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
Php
#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.
Php
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 :))
Php
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.
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 ?
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
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 ?
Php
Fikir yanlış. Ben o yüzden bu fikir burda çöker dedim. Çünki gerçekten öyle. ama nedense saçmalamakla suçlandım.