Kodlama sırasında hataların ekrana yansıtılması programcılar için oldukça büyük kolaylık sağlar. Hatanın sebebinin bulunması ve düzeltilmesi için en önemli adım, hata mesajının doğru yorumlanmasıdır.
CodeIgniter`da çalışma sırasında hata mesajlarının ekrana yansıtılması amacıyla kök dizindeki index.php dosyasının içinde bulunan error_reporting() fonksiyonuna verilen değeri E_ALL olarak değiştirmek gerekir. Böylece program çalıştığında oluşan her türlü hata (uyarı, bilgi ve ölümcül hatalar) ekrana yansıtılacaktır.
Kodlama işlemi bittikten sonra program yayına geçmeden önce, olası saldırıları önlemek için yapılması gerekli en önemli adım, hata mesajlarının ekrana yazdırılmamasıdır. Hata mesajlarının görüntülenmesini engellemek istenirse, kök dizindeki index.php dosyasının içinde bulunan error_reporting() fonksiyonuna verilen değer 0 (sıfır) yapılmalıdır.
Ancak bu ayar ile veritabanında oluşan hataların ekrana yansıtılması önlenemez. Veritabanı hataları, art niyetli kişilerin siteye olası sızmalarına neden olabilecek detayda bilgi (veritabanı adı, tablo ve değişken adları vs.) içerebilir. Bu nedenle veritabanı hatalarının yayımdaki sitelerde ekrana bastırılmaması gereklidir. Bunu sağlamak amacıyla, application/config dizini altında bulunan database.php dosyasında aşağıdaki ayarın yapılması gereklidir :
$db['default']['db_debug'] = FALSE;
Böylece veritabanında oluşacak hatalar ekrana bastırılmayacaktır. Tüm hataların ekrana yazdırılması önlendikten sonra, hata takibi log dosyaları aracılığı ile yapılmalıdır. Bu amaçla application/config dizini altındaki config.php dosyasında aşağıdaki ayarın yapılması gereklidir:
$config['log_threshold'] = 1;
Bu değişken ile sadece ölümcül hata mesajları kayıt altına alınacaktır. Log dosyaları system/log dizini altına kayıt edildiğinden, bu klasöre yazma yetkisi (unix işletim sisteminde 0755) verilmesi gereklidir.
@03 Temmuz 2010: log_treshold değişkeni değeri "1" olarak düzeltilmiştir. İrfan'a uyarısı için teşekkürler.
Yazarı : Fatih BAZMAN | Yorum Ekle | Etiketler : SQL error Güvenlik
Türkiye