Would you like to react to this message? Create an account in a few clicks or log in to continue.


 
AnasayfaAnasayfa  AramaArama  Latest imagesLatest images  Kayıt OlKayıt Ol  Giriş yap  

 

 SQL Injection acıgı

Aşağa gitmek 
YazarMesaj
bayzın
Misafir




SQL Injection acıgı Empty
MesajKonu: SQL Injection acıgı   SQL Injection acıgı Icon_minitimePaz Kas. 11, 2007 6:30 am

Simdi sizlere web sitelerinde en cok karsilasilan guvenlik acigi olan SQL Injection hakkinda kisa bir bilgi vermek istiyorum.

Daha yeni uyandım sabah saat 07.30 da uyumuştum 16.00 da kalktım ve bu makaleyi hazirliyorum bu makaleyi o yüzden eksik ya da hatali bilgi olursa mazur gorun.

SQL Injection nedir?

SQL injection her hangi bir sorgulama sirasinda, sorgulamanin saldirgan tarafindan kesilip kendi sorgusunun işleme konmasidir. Biraz karisik oldu derseniz anlatmaya devam edecegim merak etmeyin.

Bildiginiz gibi SQL cumleleri arasina noktali virgul (";") konularak ard arda farkli sql cumlelerinin bir anda islenmesi saglanmaktadir. Iste burdaki puf noktadan hareketle devam edecegiz. SQL cumlesi işlemleri sirasinda tırnak konmasi onemlidir oyle ki bu tırnaklar sql cumlelerini kesebilmektedir. Ornek verecek olursal

Select * from users where username = 'hedehodo' cumlesinde tırnak icindeki kelime disardan bir degiskenle alindigi varsayip bunu bir php kodu uzerinde ornek olarak gosterirsek

$query = mysql_query("Select * from users where username = '$username'"); satirinda disardan alinan $username degiskenin icinde bir adet daha ' oldugunu varsayarsak gelen bilgi su hale donusucektir.

$query = mysql_query("Select * from users where username = 'hede'hodo'"); bu kodu calistirdigimizda ise bir hata mesaji karsimiza gelecektir cunku SQL cumlesi hede den sonra tek tirnak gelmesiyle bitmis arkasindan gelen hodo ise sql i bozmus ve dogal olarak calistirilamamistir. simdi eger tek tirnakta sonra noktali virgul konsaydi nasil olacakti?

$query = mysql_query("Select * from users where username = 'hede';hodo'"); bu sekilde olsutuktan sonra artık elimizde 2 tane sql cumlesi vardır diyoruz cunku ilk cumle notkali virgul ile sonlandirilmis ve calistirilmistir. o zaman bize kalan 2. kismi duzenlemektedir.

$query = mysql_query("Select * from users where username = 'hede'; Update users set password='1234'"); gordunuz degil mi cumle nerelerde nereye geldi. simdi calistirilan 2. cumle users tablosundaki tum kullanicilarin sifrelerini 1234 haline getirdi. o zaman tekrar acik bir sekilde yazicak olursak;

$username = "hede'; Update users set password='1234"; seklinde bir username geldigi zaman SQL cumlesine etki edilmis oluyor. EK1: kafadan denemeden yazıyorum calismazsa ustume gelmeyin

bunu neden anlattım....Derler ya onlemini almak icin nasil yapildigini bilmek lazim. PHP uzerinde bunu basit bir komutla halledebilirsiniz...

allah addslashes komutunu koyanlardan razı olsun diyoruz ve komutu anlatıyoruz...

addslashes komutu gelen bilgi icindeki tirnak vs gibi cumleyi kesebilecek elemanlarin onune ters slash ("\") isaretini koyarak bunu engellemektedir. ornek kod verecek olursak;

$username = addslashes($_POST[username]);

$query = mysql_query("Select * from users where username = '".$username."'");


Bu kadar umarım işinize yarar Sad
Sayfa başına dön Aşağa gitmek
tr_aksaray_tr

tr_aksaray_tr


Mesaj Sayısı : 133
Yaş : 32
Kayıt tarihi : 12/11/07

SQL Injection acıgı Empty
MesajKonu: Geri: SQL Injection acıgı   SQL Injection acıgı Icon_minitimePtsi Kas. 12, 2007 2:27 am

ewy
Sayfa başına dön Aşağa gitmek
 
SQL Injection acıgı
Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
 :: Hacking Area :: + + Web - Domain-
Buraya geçin: