12 Tem, 2016

SQL İnjection nedir, Nasıl oluşur ve önlemi
" SQL İnjection nedir, Nasıl oluşur ve önlemi "

Merhaba beyler.

Bu yazıda Sql İnjection nedir ne işe yarar nasıl yapılır ve sonucu ne olur bakalım.

Sql İnjection nedir ? Sql İncection; Sql sorgularının arasına dışarıdan müdahale ile yeni veri ekleme işlemine denilebilir.

Günümüzde Fremawork’ler sayesinde neredeyse sql injection kalmadı diyebiliriz ama yine manuel kod yazan arkadaşlar ve bu alanda yeni olanlar için basit bir anlatım yapalım.

Sql İnjection nasıl yapılır ?

Şimdi basit bir betik ile sql injection yapalım bu arada siz de nasıl yapılır ve önlemi nasıl alınır görürsünüz.

$baglan = mysq_connct ("localhost", "root" "");
mysq_select_db("slaweally","$baglan");
$sql = "SELECT * FROM people WHERE id = '$_GET[İD]' ";
$sonuc= mysq_query($sql,$baglan);
while ($row=mysql_fetch_array($sonuc))
{
echo $row ['ad']." ";
echo $row['soyad']."<br /&gt ";
}
echo "<br /&gt ";
echo "$sorgu: "$sql;

Şimdi sql injection açığı meydana getirdik peki bunu nasıl kapatacağız ?

$input ="Veriler kontrol etcez pampa";
if (preg_match("/-[\-]{2,}|[;]|[']|[\\\*]/", $input))
echo "sql Aradığınız tespit edildi";
else 
echo "giriş yaptın hafız ";
İşte bunun gibi bazı kodları filtrelemek yeterli olacaktır ama siz aklınıza geldiği gibi düşünüp geliştirin burda ne yazıyorsa olduğu gibi alıp kullanmayın 🙂
<%
Fonction security (veri)
veri = replace (veri , "'","",1-1,1)
veri = replace (veri , "\","",1-1,1)
veri = replace (veri , "|","",1-1,1)
veri = replace (veri , "#","",1-1,1)
veri = replace (veri , "*","",1-1,1)
veri = replace (veri , "!","",1-1,1)
veri = replace (veri , "&","",1-1,1)
veri = replace (veri , "%","",1-1,1)
veri = replace (veri , "=","",1-1,1)
veri = replace (veri , "and","",1-1,1)
veri = replace (veri , "'s","",1-1,1)
veri = replace (veri , "'a","",1-1,1)
veri = replace (veri , "/","",1-1,1)
sevurity = veri
end function
%>

SQL Injection Saldırıları Önlemek için İpuçları

1- Cookie değerleri dahil olmak üzere tüm kullanıcı girişleri için güçlü bir sunucu taraflı doğrulama uygulayın.
2- Kullanıcı girdilerinde özel karakterlerden kaçın veya filtreleme yapın.
3- Mümkün olduğunca stored procedure kullanın.
4- Parametreli sorgu veya ORM kullanın.
5- Sql Server exec komutunu kullanmaktan kaçının.
6- Uygulama içinden veritabanına bağlanmak için sa kullanıcısını kullanmaktan kaçının. Sorguları çalıştırmak için düşük özellikli bir hesap kullanmaya dikkat edin.

Evet arkadaşlar Sql İnjection açığı oluşturma ve nasıl kapatılır onu anlatmaya çalıştık.

(Makale baya bir eski arkadaşlar 2013’te paylaşmıştım yeniden bir blogta buldum kod içindeki “slaweally” görünce hatırladım benim olduğunu 🙂 )

Neyse selametle arkadaşlar..

Bu yazı 1517 Defa okundu, Beğendiyseniz üstteki benzer yazıları okumanızı öneririm, isterseniz site içinde farklı içerikleri arama yapabilirsiniz.

Ali Çömez / Slaweally

Kaldırımda yürürken beyaz çizgilere basmamaya çalışan, Sabah yüzünü yıkarken dirseklerinden su sızmasından nefret eden, Dönerle ayranı aynı anda bitirebilen, son dakikada otobüsü kaçırsada grur yapıp arkasından koşmayan... bir insanım :)

  1. ogün dedi ki:

    eyvallah müdür senin bu blogda olmasa 🙂

  2. Muhammed ali dedi ki:

    Güzel yazmışsın ama bu devirde sql mi kaldı, zaten sende söylemişsin yukarda :::::)

  3. Arda Tezcan dedi ki:

    SQL Injection Saldırıları Önlemek için İpuçları

    1- Cookie değerleri dahil olmak üzere tüm kullanıcı girişleri için güçlü bir sunucu taraflı doğrulama uygulayın.
    2- Kullanıcı girdilerinde özel karakterlerden kaçın veya filtreleme yapın.
    3- Mümkün olduğunca stored procedure kullanın.
    4- Parametreli sorgu veya ORM kullanın.
    5- Sql Server exec komutunu kullanmaktan kaçının.
    6- Uygulama içinden veritabanına bağlanmak için sa kullanıcısını kullanmaktan kaçının. Sorguları çalıştırmak için düşük özellikli bir hesap kullanmaya dikkat edin.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Spam olmadığınızı doğrulamak için aşağıdaki alana slaweally yazın