|
|
#1 (permalink) |
|
Üyelik Tarihi: 05.01.2007
Yer: adana
Mesaj: 24
|
sql injection engellemek
merhaba herkese... phpde geliştirmeye çalışıyorum kendimi ancak gün içinde sürekli kafama birşeyler takılıyor , bugün de kafama takılan şeyin bir isminin olduğunu ve hatta çok canlar yaktığını öğrendim. evet SQL injection i araştırdım biraz ancak üzerinde çalıştığım sistemimin siz de göreceksiniz ki SQL injectiona müsait olduğunu farkettim ancak ne yaptıysam kendi sistemimi hack!leyemedim. login olma kısmı şu şekilde... Kod:
$tablo = "select * from uyeler where kuladi='$login' and sifre='$password'"; SQL injeciton için stored procedure ve mysql_real_escape_string() den bahsediliyor ancak bunu login formuma nasıl uygulayacağım konusunda bir fikrim yok. Fikir belirtirseniz sevinirim. |
|
|
|
|
|
#2 (permalink) |
|
Re: sql injection engellemek
merhaba, istemediğin karakterleri array içine atip, sonra da sitendeki tüm $_GET ve $_POST larin içinde bunlari kontrol ederek durdurabilirsin.
örnek teşkil etmesi için: Kod:
$gelme = array ('select', 'insert', 'delete', 'update', 'drop table', 'union', 'null', 'SELECT', 'INSERT', 'DELETE', 'UPDATE', 'DROP TABLE', 'UNION', 'NULL');
for ($i = 0; $i < sizeof ($_GET); ++$i)
{
for ($j = 0; $j < sizeof ($gelme); ++$j)
{
if (preg_match ('/' . $gelme[$j] . '/', $_GET[key ($_GET)]))
{
$temp = key ($_GET);
$_GET[$temp] = '';
exit("SAKINNNN !!! ");
continue;
}
}
|
|
|
|
|
|
|
#5 (permalink) |
|
Üyelik Tarihi: 05.01.2007
Yer: adana
Mesaj: 24
|
Re: sql injection engellemek
asilens,
ancak bu şekilde şifresi selecto olan birisi giriş yapamıyor. böyle bir dezavantaj var. gerçi şifre alanı md5 ile karşılaştırılarak yapılırsa sorun olmaz ancak textbox ın kullanıdığı çok alan var hepsi için de md5 karşılaştırması yapamayız sanırım. Kafam takılan bir yer daha var. bazı sitelerde text alanı girilen kısımlara HTML kodu girildiği zaman okuma sırasında kodlar aynen yazıyor ancak çalışmıyor tabi ki.. strip_tags () komutu bildiğim kadarıyla HTML tagleri ortadan kaldırabiliyor. ancak benim istediğim şey hiç bir kodun (ne PHP ne de HTML) çalışmaması ama kabul etmesi , sadece benim ayarladığım bbcodeların işlevli olması.. inşallah açıklayıcı olmuşumdur. |
|
|
|
|
|
#6 (permalink) | |
|
Re: sql injection engellemek
Alıntı:
|
||
|
|
|
|
|
#8 (permalink) |
|
Üyelik Tarihi: 02.06.2001
Yer: Ankara
Yaş: 23
Mesaj: 60
|
Re: sql injection engellemek
Kod:
$gelme = array ('select', 'insert', 'delete', 'update', 'drop table', 'union', 'null', 'SELECT', 'INSERT', 'DELETE', 'UPDATE', 'DROP TABLE', 'UNION', 'NULL');
for ($i = 0; $i < sizeof ($_GET); ++$i)
{
for ($j = 0; $j < sizeof ($gelme); ++$j)
{
if (preg_match ('/' . $gelme[$j] . '/', $_GET[key ($_GET)]))
{
$temp = key ($_GET);
$_GET[$temp] = '';
exit("SAKINNNN !!! ");
continue;
}
}
__________________
..rip //tribal |
|
|
|
|
|
#9 (permalink) | ||
|
Üyelik Tarihi: 07.01.2007
Yer: Adana
Yaş: 21
Mesaj: 103
|
Re: sql injection engellemek
Alıntı:
Alıntı:
|
||
|
|
|
|
|
#10 (permalink) | |
|
Üyelik Tarihi: 13.07.2000
Yer: LND
Mesaj: 4,279
|
Re: sql injection engellemek
Aslinda usttekilerin hicbiri cok iyi bir koruma degil.
Whitelisting yani girilebilecekleri kisitlama en mantikli hareket ancak ' genelde gecerli bir karakter bakiniz O'Reillt, O'Neil her ne kadar bu sekilde turk ismi olmasa da konu o degil. Mesela bir forum sistemi yaziyorsunuz (') karakterini silecekmisiniz ya da kabul mu edeceksiniz ? Bu kod ise hic bir guvenlik saglamiyor, Alıntı:
Diliniz PHP db" niz MySQL ise mysql_real_escape() eger ki ASP ya da herhangi bir dil ve SQL server kullaniyorsuaniz da ' karakterini '' yani iki tane tek tirnaklar replace edeceksiniz. Ek olarak tabii ki kabul edilen karakterler ile girisi sinirlamak her zaman en iyi metod ama karakterleri sinirladikrtan sonra bile db ye gonderirken mysql_escape() gecirilmeli. Klasik olarak tlanilan bir noktada eger integer bekliyorsaniz degeri kontrol edin ve sadece integersa kabul edin.
__________________
FERRUH.MAVİTUNA - İnanmıyorum, yeni site! |
|
|
|
|
| Sponsorlu Bağlantılar | |
|
Zoque.Forum
Reklam
|
|
Zoque'a hoşgeldiniz!