Veritabanı

PL/SQL nedir ?

Tuğba Cevizci —  3 Kasım 2015 — 1 Comment

Merhabalar,

Ben burada zaman zaman Oracle ve PL/SQL ile ilgili yazılar yazacağım. İlk olarak da PL/SQL nedir, ne değildir onu anlatmak istedim.

Öncelikle Sql nedir, PL/SQL nedir ve ortak yanları nelerdir ?

SQL, ilişkisel veritabanlarında verinin depolandığı birimlerle ilgili işlem yapabilmek veya veritabanını yönetebilmek için kullanılan bir dildir. PL/SQL ise Oracle şirketi tarafından SQL’in kısıtlamalarını aşabilmek için oluşturulan özel dildir.

Okumaya devam edin...

Enjeksiyon saldırıları, kullanıcılardan gelen dataların kontrol edilmeden komutlarda veya veritabanı sorgularında kullanılmasıyla meydana gelir. SQL Injection saldırıları da aynı mantıkla hedef web sitesinin kullandığı veritabanında yetki olmaksızın sql sorguları çalıştırılmasını sağlamaktadırlar.

Okumaya devam edin...

Önceki yazımızda cihazların nasıl iletişim kurduğu ve iletişim kurallarından kısaca bahsetmiştik. Şimdi ise “Port Dinleyici” adını verdiğimiz sunucu programını yazmaya başlayacağız.
Her cihazın yönlendirildiği porta bıraktığı sinyalin formatı farklıdır. Bu sinyallerin formatının üreticiden üreticiye değiştiğine değinmiştik. Sinyaller genellikle String dizisi halinde gönderilir. Ve dizi içerisindeki değerler birbirinden ayraçlar ile ayrılır.
Duman dedektörümüzün sunucuya gönderiği sinyalin aşağıdaki dizi olduğunu varsayalım.

Örnek Sinyal : 
1234;1200;28032014;28.4;300;0;0;0;1100;300;50;25 
Parçalanmış Hali : 
1234= Cihaz Tanımlayıcısı 
1200 = Saat 
28032014 = Tarih (GünAyYıl) 
28.4= Sıcaklık 
300= Basınç (Bar) 
0 = Dedektör Açık/Kapalı(1/0) 
0 = Enerji Var/Yok(1/0) 
0 = SD Kart Takılı/Takılı Değil (1/0) 
1100 = Basınç Set Değeri (Yüksek) 
300 = Basınç Set Değeri (Düşük) 
50=Sıcaklık Set değeri (Yüksek) 
25 =Sıcaklık Set değeri (Düşük) 

; = Parçalama Ayıracı 
Okumaya devam edin...

SQL Injection

Zinnur Yeşilyurt —  2 Eylül 2014 — 2 Comments

Merhabalar,

Bu benim bu blogdaki ilk yazım. Bu blogla Linux Yaz Kampı 2104’ü anlatan bir yazının altına attığım bir yorumla tanıştığım için Linux Yaz Kampı 2014’te Web Uygulama Güvenliği ve Güvenli Kod Geliştirme kursunda öğrendiğim bir konuyla başlamak istedim. Konunun çok ilerisini anlatan bir yazı değil de biraz özet maiyetinde. Zira bu konu için kitaplar var. o_O

Yazılımcı için iyi yazılım, uygulama geliştirmek önemlidir. Ancak geliştirdiğimiz işin güvenli olması da çok çok çok önemli bir konu. Zira çok fazla kişi internet bankacılığı, mobil ödeme, kredi kartı vs… kullanmakta.

Linux yaz kampı bünyesinde gittiğim kurs sonrası kursa dair bir doküman hazırlığındayım. Yakın zamanda bitecek ve yayınlayacağım. Kursun toparlama özeti gibi bir şey olacak sanırım. Ama şimdiden 25 sayfa olan bir özet görmedim. Neyse konumuza gelelim.

OWASP Top 10 sıralamasında 1. sırada yer alan Injections zafiyetinin bir çeşidi de Sql injection. Sql injection kullanıcıdan alınan input alanına arka tarafta çalışan Sql sorgusunu manipüle edip amacımıza hizmet edecek çıktılar vermesini sağlayacak Sql query’ler sokuşturmaktır.

Okumaya devam edin…

PostgreSQL’de sürekli erişilebilir (HA) bir küme yapılandırması (cluster configuration) kurmak, çeşitli replikasyon (replication) metodları ile mümkündür. Sıklıkla Warm Standby veya Log Shipping şeklinde anılan replikasyon modellerinde sürekli arşivleme (continuous archiving); birincil/ana (primary/master) sunucu başarısız olursa işlemleri devralmaya hazır bir ya da daha fazla yedek (replica) sunucu olması ile sağlanır.

Bu yazıda, ana (master) sunucuyu çeşitli sebeplerden dolayı kaybedersek (fail scenarios) replika (yedek) sunucuyu nasıl birincil/ana sunucuya yükseltebileceğimizi (promote) göreceğiz.

Öncelikle yük dağıtma (failover) senaryosunun düzgün tamamlanabilmesi için ana sunucudaki postgresql servisinin durmuş olduğundan emin olmalıyız. Aynı anda çift master rolü olan bir replikasyon beklenmedik sonuçlar doğuracaktır. O yüzden imkan varsa -sunucu erişilmez hale gelmiş olabilir; donanımsal sorunlar vs-, önce ana (master) sunucudaki postgresql servisini durdurmalıyız.

Okumaya devam edin...

Bir sorgu optimizasyonu yaparken sorgunun nasıl planlandığını incelemek önemlidir.

Eğer sorgu çalıştırmak için pgAdmin aracını kullanıyorsanız, pgAdmin arayüzünde üst menüdeki explain explainanalyze butonuna tıklayabilirsiniz.

Ya da sorguyu psql ile veya yine pgAdmin’in sorgu panelinde şöyle çalıştırabilirsiniz:

Explain select * from table_a;
Explain analyze select * from table_a;

Yukarıdaki gibi explain ve explain analyze sorguları çalıştırıldığında farklı sorgu planları dönerler.

Explain ile olan sorgunun planı:

                            QUERY PLAN
------------------------------------------------------------------
 Seq Scan on table_a (cost=0.00..4740.30 rows=86430 width=140)
(1 row)
Okumaya devam edin...