IP Loglama Genel Bir Hata

19-10-2007

Özellikle kaynak kod analizleri yaparken sık sık rastladığım hatalardan biri bu.

Güvenlik veya herhangi bir nedenden dolayı uygulamada IP adreslerini loglamak istiyorsunuz ancak potansiyel proxy adreslerini de loglayabilmek için HTTP_X_FORWARDED_FOR HTTP Header' ını da (veya benzer başka HTTP headerları) kullanıyorsunuz.

Bu güzel bir fikir çünkü bazı proxyler ziyaretçinin gerçek IP adresini bu HTTP Header(ları) içerisinde gönderiyorlar ama bu işlem yapılırken uygulanan çok yanlış bir model var.

Sık şekilde şu kod ile karşılışıyorum :

  1. IPADDRESS adresi değişkenini tanımla,
  2. HTTP_X_FORWARDED_FOR HTTP header' ı varsa IPADDRESS değişkenini HTTP_X_FORWARDED_FOR değerine eşitle
  3. Yoksa IPADDRESS değişkenini ziyaretçinin normal IP adresine eşitle.
  4. IPADDRESS' ini veritabanına vs. kaydet.

Sanırım herkes sorunu anladı bile. Normal bir ziyaretçi olarak server' a kıçınızdan uydurduğunuz IP adreslerini HTTP_X_FORWARDED_FOR HTTP Header' ı içerisinde gönderebilir ve gerçek IP adresinizin loglanmasını engelleyebilirsiniz.

Bazı programcılar bu datanın her zaman geçerli IP adresi döndüreceğini düşünüp bu datayı veritabanına gönderirken filtreleme / kontrol yapmayı da ihmal edebilirler. Tabii ki bu da SQL Injection açığına neden olabilir.

Recent Blog Posts

See all of the blog posts