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