LYK — Web Uygulama Güvenliği ve Güvenli Kod Geliştirme (3.gün)

Hatice Ergün
Jul 24, 2017 · 3 min read

Bir önceki yazı için tıklayın.

Developer Tool

Bu araç, google tarafından geliştiricilerin işlerini kolaylaştırmaya yönelik yapılmıştır. F12 tuşu ile yada sağ tık yapıp ‘incele’ özelliğini seçerek bu araca ulaşabilirsiniz.
Bu aracın öncelikle güvenlik için kullanacağımız özelliklerini anlatacağım. Sekmelerinden kısaca bahsedecek olursak;
Elements: DOM’ları oluşturur.
Console: Javascript konsoludur. JS yazmayı sağlar.
Sources: Bulunduğumuz sayfanın yüklemiş olduğu tüm dosyalar burada listeler.
Network: Yapılan her istek burada tutulur. Buradaki bir kayıta tıkladığımız zaman request ve response paketlerini detaylıca görebiliriz.
Performance: Hangi dosya ne kadar sürede geldiği bilgisi, boyut vs. bilgiler burada tutulur.
Application
-storage: Kayıtlar burada tutulur.
-local storage: Key ve value değerleri burada tutulur, küçük bir cache gibidir.
-cookies: Cookielerin listesi burada tutulur.

Sadece http requesti ile okunabilir headerlar vardır. Bunların HttpOnly sekmesi aktif olur. Bu bilgiler tarayıcı tarafından korunur. JS kodu ile bu bilgilere ulaşılamasın diye bir önlemdir.

(Daha fazla bilgi için: https://www.youtube.com/watch?v=FUrUBdfZIfA)

Elements Zafiyetleri

Elements, css ve html içeriğinin tutulduğu ve tüm elemanların göründüğü sekmedir. Bu elemanlar DOM mimarisine göre tutulur. DOM elemanları bir obje olarak görür ve sayfa içeriğini bu şekilde saklar.

Şimdi örnekler verelim.

Clickjacking: Css yanılgısı ile kullanıcıya işlem yaptırmaktır (Örnek, film izleme sitelerinde çarpı butonuna bastığınız zaman başka bir sayfaya yönlendirilmek.).
Chorame Autofill: Gizlenilmiş form elemanını otomatik doldurma özelliği sayesinde kullanıcı görmeden bilgi çekmek (Örnek, tarayıcının otomatik doldurma özelliği aktifleştirildiği için doldurulan formda sadece kullanıcı adı ve şifre bilgisi değil yanı sıra görünürlüğü kapatılmış bir input nesnesiyle mail bilgisi almak).
Bunlar css ile ilgili oluşabilecek zafiyetlerdir.

Console Zafiyetleri

Burada yazacağımız kodlarla siteye eklemeler yapabiliriz. Js içinde events özelliği vardır. Bir şeyin gerçekleşmesi halinde bir olay tetiklenir (Bir objeyi seçtiğimiz zaman hangi olayların gerçekleştiği bilgisi yine element sekmesindedir.). Bu özellik kullanılarak siteye saldırı yapılabilir. Sonraki derslerde detaylandıracağız. Burada console logları ve türlerinin bilgileri vardır.

Session ve Cookie Farkı

Bu kavramların kullanımındaki zafiyetler oldukça fazladır.

Cookie(çerez): Her seferinde bilgi almakla uğraşmamak için bilgiler bir seferde alınır ve bu bilgiler çerezde tutulur.
Session(oturum): Cookie ile alınan verinin sayfalar arasında aynı kişi olup olmadığının kontrolünü yapmak için kullanılır. Oturum açılır ve kontrol yapılır.

Php, cookie için 26 karakterlik random olarak bir değer oluşturur. Sessionların tutulduğu yerde(var/lib/php/session) bu dosyayı oluşturur. Response paketi dönerken bu cookie gönderilir. Bu cookie bilgisine göre yetki kontrolü session ile yapılır. Bir sonraki sayfa ziyaretinde (tekrar istek yapıldığına) bu bilgi ile kontrol edip yönlendirme yapılır.
Kod formatı;
sess_{_27karaktelik random kod_}

Apache ve PHP Config Dosyaları

Developer, apache ve php ile varsayılan olarak gelen bazı ayarları güvenlik önlemi almak için değiştirmelidir. Ayar dosylarının dizinlerinden ve hangi ayarların nerelerde bulunduğundan bahsedelim.

Php config dosyaları /etc/php/7.0/ dizininde bulunur. Bu dizinde;
apache2 dizinindeki ayarlar daha çok log içindir.
cli(client) : Dosyasında istek yapan makine tarafındaki ayarlar bulunur.
php.ini : Php ayarlarının değiştirme config dosyasıdır.

Apache config dosyaları /etc/apache2 dizininde bulunur.
Apache birden fazla domain klasörünü içinde barındırır. Bu klasörler için ayarlar default.conf da yapılır.
Apache dosyaları var/www/html dizininde tutar.

Örnek: php.ini dosyasında, tüm hataları göster(error-reporting=E-ALL ) ayarı default olarak gelir. Saldırgan hata mesajlarına ulaşmamalıdır. Hata mesajlarından kodları tahmin edebilir ve buna göre hareket edebilir. Bunun önüne geçmek için hataları gösterme(error-reporting= ~E-ALL )olarak ayarı güncellemeliyiz (Yapılan bu değişiklikleri web server tarafında da güncellemek için apache servisini tekrar başlatmamız gerekir. ).

Bir sonraki yazı için tıklayın.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade