Güvenlik · 12 Temmuz 2016 6

#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..