16 Ağustos 2014 Cumartesi

GÜVENLİ KOD GELİŞTİRME-1 ERROR MESAJLARININ İŞLENMESİ

TANIM


Uygulama esnasında oluşacak hatanın detayları(yığın bilgisi) mutlaka gizlenmelidir. Bir veri sızıntısı güvenlik(data leaking) çeşididir. Sisteme hakim bir uzak kullanıcının sisteme müdahale etme ihtimali artmaktadır.

SENARYO -1- KÖTÜ DURUM 

Örnek kod bloğunda bir click event sonrasında bir veri tabanı bağlantısı gerçekleştirilmektedir.

public SQLContainer getMaleCustomer()
    {
        try
        {
            connectionPool = new SimpleJDBCConnectionPool(DRIVER_NAME,
                    DATABASE_URL, DATABASE_USERNAME, DATABASE_PWD);
            String query = "select * from t_customer where gender='Male'";
            prepareConnection();
            FreeformQuery freequery = new FreeformQuery(query, connectionPool,
                    "id");
            sqlContainer = new SQLContainer(freequery);
            connection.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
       
        return sqlContainer;
       
    }
Veri tabanı bağlantısı gerçekleştiren modüllerden birine baktığımız vakit try-catch kullanılmış ve e.printStackTrace() metodu kullanılarak hata catch edilmiştir.

TESPİT 

catch bloğuna printStackTrace() metodu kullanıldığı için exception mesajları olduğu gibi kullanıcı arayüz tarafına yansayacaktır(Şekil 1).

Şekil.1 Catch bloğunda data leaking



 ÇÖZÜM

public SQLContainer getMaleCustomer()
    {
        try
        {
            connectionPool = new SimpleJDBCConnectionPool(DRIVER_NAME,
                    DATABASE_URL, DATABASE_USERNAME, DATABASE_PWD);
            String query = "select * from t_customer where gender='Male'";
            prepareConnection();
            FreeformQuery freequery = new FreeformQuery(query, connectionPool,
                    "id");
            sqlContainer = new SQLContainer(freequery);
            connection.close();
        }
        catch (SQLException e)
        {
           
            Notification.show("Hata oluştu",
                    Type.HUMANIZED_MESSAGE);
            StringWriter sw = new StringWriter();
            e.printStackTrace(new PrintWriter(sw));
            System.err.println(sw.toString());
           
        }
       
        return sqlContainer;
      
  }

Yukarıdaki kod bloğunda Senaryo -1- deki kod örneğine göre catch bloğuna kullanıcıya “Hata oluştu” gerekçesinde bir hata mesajı verilmiştir. Bunun yanında Senaryo-1- deki hata stack kısmı konsol tarafına StringWriter ve PrintWriter nesneleri kullanılarak yazılmıştır.Bu loglar log4j gibi 3.parti eklentilerle daha işlevsel, okunabilir hale getirilebilir.

Şekil.2 Doğru bir hata yönetimi



REFERANSLAR VE DETAYLI BİLGİ İÇİN





10 Ağustos 2014 Pazar

DOS-DDOS Saldırısı Nedir ?


DoS aslında sistemi ele geçiren bir saldırı değildir.Amacına göre iki türlü DoS saldırısı vardır.Bunlar

·         Bandwith tüketimine yönelik saldırı
·         CPU,RAM,disk,buffer gibi sistem kaynaklarını tüketmeye yönelik saldırı

DDoS un DoS saldırılarından tek farkı çok noktadan(farklı IP adreslerinden) saldırının gerçeklenmesidir.
Belli başlı saldırı türleri;
  • SYN Flooding
  • UDP Flooding
  • ICMP Flooding
  • HTTP-GET Flooding
  • Smurfing

Çoğunluğu flood yani sel gibi birim zamanda yüksek şiddette zarar verecek şekilde sistemin kaynaklarının kullanılmasıdır.
SYN Flooding

SYN saldırısı,TCP katmanında(OSI seviye 7) gerçekleşen bir saldırıdır.TCP paketlerinin değiştirilip karşı tarafın üçlü el sıkışması mekanizmasını bozacak şekilde gerçekleşir.Üçlü el sıkışması TCP bağlantısının gerçekleşmesi için yapılan bir alt bağlantıdır.



    
Üçlü el sıkışmanın aşamaları soldaki gibidir.Resmin soldaki şekline A noktası, sağdakine ise B noktası diyelim.
A noktası SYN pakedini gönderir.
B noktası SYN-ACK pakedini 
ve son olarak A noktası tekrardan ACK pakedi göndererek üçlü el sıkışması gerçekleştirilir






Bu noktada SYN Flooding saldırısı üçüncü aşamada gerçekleştirilir.İkinci aşamada SYN-ACK pakedi geldikten sonra alan taraf asla ACK pakedi göndermez bu şekilde karşı taraf ACK pakedini alamadığı için TCP mimarisi gereği SYN-ACK pakedini tekrar tekrar göndermeye çalışacaktır.Burada hem ağ hemde sistem yorulmaktadır.Ağın yorulması,ağ üzerinde giden SYN-ACK paketleri bantgenişliğini doldurmaktadır.Sistem tarafında ise pakedi SYN-ACK pakedini gönderen makine her pakedi üretimde işlemci zamanını harcar ve gönderdiği SYN-ACK pakedi başına TCP bufferı dolmaya başlar.İşte SYN saldırısının etkili tarafı buradadır.Hem ağı hemde ağa bağlı bir bilgisayarı hizmet dışı bırakabilmektedir.
Bir SYN Flooding saldırısı