search
Giriş
Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
819 gösterim
Database sql atak yapilmasi ,yani injection nedemektir?
kapalı
Veri Tabanı kategorisinde 2.0k puan
yeniden etikenlendirildi

1 cevap

1 oy
 
En İyi Cevap

Selamlar,

SQL Injection açıklamak için yine her zamanki gibi kelime anlamlarından başlayalım. Sanıyorum SQL'i tanıtmaya gerek yok. Veri tabanı üzerinden sorgulama dilimiz. Injection; sözlükte zerk etmek olarak geçiyor, sanıyorum günümüzde çok kullanılan bir kelime değil. Genellikle enjeksiyon kelimesini daha çok kullanıyoruz. Yani bir şırınga ile ilacın vücüda zerki.

Kelimeden yola çıkarsak uygulamanın içine bir şekilde SQL kodunu yerleştirmemiz gerektiğini anlayabiliriz. Genellikle uygulamanın herhangi bir yerinde bir girdi varsa (genellikle textbox kullanılır), bu girdiye bir şekilde SQL kodu çalıştırılmak üzere yazılır. Asıl amaç elektrikde olduğu gibi kısa devre yapmaktır, kazanımları çok büyük olabilir. Mesela direk login ekranı üzerinden yapıldığında kişinin bir kullanıcı adı olmasa bile direk girebilmesini, zaman zaman yönetici hakkını bile alabilmesi söz konusu oluyor. 

Genel olarak uygulama hata aldırılıp uygulama ve sunucu için bilgi toplamak için kullanılır. Eğer direk yönetici hakkı alınabilirse ne alâ. 

Örnek verip vermemek konusunda açıkçası biraz çekindim :) Şimdi insanları gidin bunları yapın araştırın açık yakalayın gibisinden teşvik etmek de istemiyorum. 

En bilinen örneklerinden birini yine de vereyim. 

Bir textbox içinde
' or 1=1 --
yazalım. Eğer bir koruma yapılmadıysa ve kod  "select * from uyeler where adi = '$uye_adi' and sifre = '$sifre'" şeklinde bir geliştirme yapıldıysa ne olacak?

bu değer "select * from uyeler where adi = '' or 1=1 --'and sifre='sifre'" diye değişecek. Bursa sorun -- işareti sql üzerinde comment/yorum satırı olduğu için adı = '' ya da 1=1 demiş olacağız. yani 1=1 olduğu için koruma yoksa direk login olabiliriz.

Nasıl korunacağız?

  • Eğer piyasadaki framework'lerden birini kullanıyorsanız muhtemelen koruyordur zaten.
  • PreparedStatement kullanmak en güzel yollardan biridir. Kullandığınız programlama dilinde preparedstatement vardır sanıyorum. En azından java/php de var.
  • Dile göre sql escape dediğimi kavram var bu yapılabilir. 
  • Kendiniz bir kod yazıp sql sorgusu içinde istenmeyen karakter var mı diye bakabilirsiniz.
İyi çalışmalar.
6.2k puan
seçti

İlgili sorular

0 oy
1 cevap 227 gösterim
227 gösterim
Yazılım mülakat sorusunda SQL'de trigger nedir? şeklinde bir soru soruldu. nedir bu Sql tetikleyici?
30 Haziran 2021 Veri Tabanı kategorisinde canonka 334 puan sordu
0 oy
1 cevap 278 gösterim
278 gösterim
.NET yazılım mülakatında SQL’de Stored Procedure nedir sorusu soruldu. SQL Stored Procedure nedir?
30 Haziran 2021 Veri Tabanı kategorisinde canonka 334 puan sordu
0 oy
1 cevap 1.6K gösterim
1.6K gösterim
Selamlar, Elimde bir tablo ve 2 tane sütun var departman_kodu ve görev_kodu adında. Bu iki sütünu tek bir sütunda listelemek istiyorum. İki kolonu tek seferde listeleme nasıl yapılır?
9 Haziran 2021 Veri Tabanı kategorisinde kupanintorunu 365 puan sordu
0 oy
1 cevap 956 gösterim
956 gösterim
Selamlar, Bir tablodaki 2 sütünü başka bir tabloya yine aynı şekilde ilişkendirip almak istiyorum. Şöyle gösterecek olursam; her departmanın bir kodu var ama bunları bağlayan unique bir id leri yok başka bir tabloya alırken direk yanyana aldığım zaman, ... Nasıl bir yol izleyebilrim. Sonuç olarak almak istediğim yeni tabloda şu şekilde olacak; umarım olayı basit bir şekilde özetleyebilmişimdir.
7 Haziran 2021 Veri Tabanı kategorisinde kupanintorunu 365 puan sordu
0 oy
1 cevap 5.8K gösterim
5.8K gösterim
Selamlar, Elimde iki tane tablo var; A_tablo B_tablo B tablosundaki departman sütunu ile A tablosundaki departman sütunundaki değerleri farklarını almak istiyorum. Bunun için ne yapabilirim? Çıktı şöyle olmalı: pci dss bt
27 Mayıs 2021 Veri Tabanı kategorisinde kupanintorunu 365 puan sordu