SQL Injection:Veritabanı Sorgulama Mimarisi Nedir ?

SQL Injection kavramını tam olarak anlayabilmemiz için öncelikle Veritabanı sisteminin nasıl çalıştığın dair temel mantığını anlamamız gerekmektedir.Veritabanı ile alakalı genel bir tanım yapmamız gerekirse ortak bir noktada oluşturulmuş ve sistemin girdilerini kayıt altına alan dosyalar ve tablolardan oluşan bir yapıdır diyebiliriz.

Veritabanları neden kullanılır sorusuna gelicek olursak.Esasında kurumlardaki bilgi ve belge yönetiminin en önemli ihtiyacı,kayıt altına aldığı tuttuğu bu dataların düzenli bir şekilde tutulması ve herhangi bir ihtiyaç veya kriz anında kullanılmasını içerir.Büyük veriler karmaşık yapılarda tutulursa veya o kurumda bir veritabanı sistemi yoksa kurumun sağlıklı bir data barındırma kapasitesinden söz edilemez.Bugün bir çok uygulama sistem içerisinde veritabanları vasıtası ile oluşturulmaktadır.Büyük miktarlardaki verilerin hızlı ve güvenli bir biçimde gereksinim duyulan bilgiye dönüştürülmesi veritabanlarının en önemli özelliklerinden birisidir.

Veritabanlarının sağladıkları yararladan bahsedebilirsek;

*Kurumlardaki veritabanlarının sağladığı genel özellik kurum içerisinde çalışanların veritabanında barındırılan kurum verilerinin depolanmasını,düzenlenmesi ve sorgulanması için kullanılabilen bir yapıdır.

*Veritabanı sistemlerinin en önemli özelliği gerekli bilgileri kayıt altına alıp sürekli güncelleyerek saklamasıdır.

*Veritabanı sistemi kurumların datalarını merkezi bir yönetim aracı ile yöneterek verilerin kontrolünün sağlanmasına yardımcı olmaktadır.

*Sistem içerisindeki uygulamalarda Veritabanları hem uygulama datalarını hemde sistemki kullanıcıların verilerini tutarak merkezileştirme yöntemi ile bilgileri loglar haline dönüştürerek 3.party programlar ile korelasyon tekniklerini kullanarak bilgi sağlama özelliğine sahiptir.

Veritabanı Yönetim Sistemi Nedir ?

İngilizce kısaltması ile DBMS(Database Managment System) olan yönetim uygulamasında digital sistemde bulunan verileri merkezi bir şekilde yönetimini içeren bir uygulama katmanıdır.Bu uygulama katmanı ile yapabiliceklerinizi açıklamak gerekirse;

*Veritabanı üzerinde güvenlik ayarlarını yapılandırabilir.

*Veritabanı üzerinde yedekleme ve failover sistemlerinin yönetimini yapabilirsiniz.

*Veritabanı üzerinde tablolar oluşturabilir,database ler arasında replikasyon sistemlerini devreye alabilir,bunun yanında maintaince planlamalarını oluşturabilirsiniz.

*Veritabanı üzerinde istenildiği zaman verileri raporlayabilir ve sorgulayabilirsiniz.

*Tutulan verilerin güvenlik izinlerini ayarlayabilir.Yetkisiz erişimleri reddetebilirsiniz.

*Triggerlar ve çeşitli procedurler oluşturabilir bunları tabloların sorgularına yazabilir ve mantıklı veriler üretebilirsiniz.

Veritabanı yönetim sistemleri de oluşan verilerin yönetimi ve kullanılmasınada olanak sağlamıştır.Ortaya çıkan managment ürünlerine baktığımızda  Microsoft Access, Microsoft SQL Server, Oracle, Sybase gibi hem veritabanı oluşturma hemde yönetimde oldukça kurumlara kolaylık sağlamaktadır.Bu veritaban sistemlerinin en önemli ortak özelliği ilişkisel veritabanı teknolojisini içermeleridir.

İlişkisel Veritabanı Türlerine Genel Bakış

Veritabanlarını incelerken bunların yapılarınıda bilmemiz bu tarz saldırıların hangi veri tabanı türlerinden geldiğini anlamamız için önemli ipuçları sunabilir.Beş tip ilişkisel veritabanı tipi mevcut durumdadır.

Object-Oriented Databases:Nesne tabanlı veritabanı diyebiliriz esasında.Bu veritabanının özelliği ise içerisinde grafiksel,çizimsel,video,ses gibi nesnel tabanlı uygulamaların depolandığı bir veritabanı türüdür.

Distiributed Databases:Türkçe karşılığı paylaşmalı veritabanı olan bu türde,sistem içerisine konuşlandırılmış veritabanları fiziksel ortamda depolanmaktadır.Bunlar aslında paylaşımlı veritabanlarının çalışma prensiplerini ortaya koymaktadır.Merkezi tek bir yerden tek bir veritabanı ile yük içerisinde olması yerine birden fazla fiziksel sunucuya dağıtarak yükün dengelenmesi ve oluşucak query lerin makinanın performans bakımından yormaması amaçlanır.Tabi bu kısımda eğer bir tane veritabanınıza saldırı gerçekleştirildi ise sekron hesaplarla çalıştığından ötürü diğer bütün veritabanlarına yayılabilme riski mevcut durumdadır.

Hypermedia Databases:Bu veritabanı türündekullanıcı, modülden modüle geçmek için, kendi yolunu kendi seçebilir. Bilgi şeması önceden belirlenmiş organizasyon şemasını gerektirmez. Her modül ekranda gösterilebilir ve gösterilen modülle diğer veritabanları modülleri arasındaki bağlantıları da gösterebilir.

Veri Bankaları: İşletmedeki tüm personelin beklentilerine uygun, bütünleşik, güncel ve tarihi verileri depolayan veritabanı yazılımlarına Veri Bankaları denir. İç ve dış kaynaklardan duruma göre anlık, saatlik, günlük, haftalık veya aylık olarak derlenen veriler veri bankasında kopyalanır. Bu veriler girişimin değişik birimlerdeki yönetim açılımlarında kolayca kullanılabilecek şekilde standartlaştırılır ve bütünleştirilir.

Veritabanı Sorgulamalarına Genel Bakış

Veritabanı sorgulamalarını bilmek yapılıcak saldırıların hangi türde ne şekilde geldiğini anlamak konusunda işinizi oldukça kolaylaştırıcaktır.SQL Injection saldırılarında hedef olan uygulamaların sorgularını test edip ona göre güvenliği sağlayabilme imkanıza sahip olucaksınız.

SQL Select Sorgusu:Select sorgusu SQL üzerinde bulunan tablonun veya database nin içeriği ile alakalı bir sorgudur.

Örnek olarak Mağaza tablosunda bulunan Personellerin Ad,Soyad,Görevi stunlarını listelemek için şu komutu kullanırız.

“Select Ad,Soyad,Görevi from Mağaza” ifadesini kullanırız.

Bütün kayıtları listemek içinse;

Select * From Mağaza” ifadesini kullanırız.

SQL Select Distinct Sorgusu: Distinct sorgusu esasen tabloda belirtilen alanda bulunan kayıtlardan birer tane örnek alır.Bunların dışında tabloda yer alan kayıtlardan tekrar etmeyen kayıtları alarak bir veri alanı oluşturur.

“Select distinct ülkeler From Dünya (Where SELECT DISTINCT sehir FROM lokasyon;”

SQL Where Sorgusu:Where ifadesi Sql komutu olarak o tablo içerisindeki oluşturduğumuz kurala bağlı olarak uygun olan kayıtların listelenmesidir.

“Select * From Market Where Barkod No=’233443322!”

Where Operatör Terimleri:Where ile beraber kullanabileceğiniz bazı operatörler mevcut durumdadır.Bunları irdelemek gerekirse.

Operator                 Açıklama

=              Eşit

<>            EşitDeğil. Note: Bazı versiyonlarda “!=” kullanılabilir.

>              Büyüktür

<              Küçüktür.

>=            Büyük Eşit

<=                         Küçük Eşit

BETWEEN           Arasında

LIKE                      Örüntü arama

IN                          Bir sütun için birden çok olası değerleri belirtmek için

SQL AND – OR Kullanımı:AND Operatörü 1. Koşul ve 2. Koşulun doğru olması durumunda çalışır.

Örneğin Banka da Müsteri ID sine göre Adını getirmek istiyor isek;

Select * From Banka where Musteri_id=’123’ and musteri_ad=’Onur’

Or yapısında ise bu biraz daha farklıdır.

Select * From Sehirler Where Sehir=’İstanbul’ or Sehir=’Samsun’

İfadesi kullanılabilir.Burda Şehirler den İstanbul ve Samsun seçeneklerini getirebilir.

Bunun yanında Or ve And ifadeleride yanyana kullanılabilmektedir.Örneğin Banka tablosundan Musteri numarası 10 ile başlayan ve bu numaraya sahip olan Onur ve Serhat isimli kişileri listelemek istiyor isek;

“Select * From Banka where Musteri_no=10 and (kisiler=’Onur’ or kisiler=’Serhat’)”        

SQL ORDER BY Kullanımı:Bu ifade varsayılan olarak artan düzende kayıtları sıralar. Azalan kayıtları sıralamak için DESC anahtar sözcüğünü kullanabilirsiniz.

Bu kısımda mağazada stokta olan herşeyi adlarına göre artan ve azalan şekilde listelemek gerekirse;

“Select * From Market order by ad ” àArtan şekilde kullanılır.

“Select * From Market Order by ad DESC”àAzalan şekilde kullanılır

INSERT INTO Kullanımı:Tablo içerisine kayıt eklemek için kullanılan bir parametredir.

Örnek olarak Banka veritabanına ait olan hesaplama tablosuna veri ekleyelim.

“INSERT INTO Banka (A_Hesap,B_Hesap,C_Hesap) values(‘4354’,’435543’,’2344’)

SQL UPDATE kullanımı:Tablo üzerinde güncelleme yapmak için kullandığımız sorgudur.

Örnek olarak Banka tablosundaki Müsteri numarasını güncellemek istiyor isek;

“Update Banka SET Musteri_No=1234 Where Musteri_id=3”             

SQL DELETE Kullanımı:Tablodan veri silmek için kullanılan bir komuttur.Örneğin Banka tablosundaki Musteri id si 1 olanı silelim.

“Delete from Banka where Musteri_id=1”

Tablodan kayıt silmek için kullanılır.Komple silmek istiyorsanızda “Delete * From Banka” diyebilirsiniz.

SQL tarafındakikomut satırlarına genel bakışımız bu kadar.Tabi SQL injectiontarafını anlayabilmek için bundan biraz daha fazla T-SQL dilini öğrenmeniz gerekmekte.Bunun için çeşitli kaynaklardan faydalanabilirsiniz.

Bir cevap yazın

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

error: Content is protected !!