Asp.Net Web Güvenliği : Insecure Direct Object References
Asp.Net MVC Web Güvenliği yazı dizisinin ilk bölümünü Insecure Direct Object References başlığına ayırdım. Bu yazı dizisinin amacı özellikle web uygulamalarında yer alan zafiyetlerini inceleyip çözüm yollarını paylaşacağım.
Insecure Direct Object References
Hemen anlaşılır bir özet geçmek gerekirse site üzerinde bir fotoğraf , bilgi , profil detayı gibi detayları görüntülemek için bir link gerekmektedir. Örnek linkimiz ; site/foto?name=ayşe eğer siz böyle bir yapı kurduysanız otomatik olarak başlığımızda ki zafiyete açık vermiş oluyorsunuz , çünkü deneme yanılma yöntemiyle (brute force) sisteminizde yer alan tüm fotoğrafları saldırgan kişi bilgisayarına indirebilir ve farklı amaçlar için kullanabilir.
Başka bir örnek verecek olursak site/profil?id=12 diyerek bir profile yönlendirme yapıyorsanız ve gerekli kontrolleri yapmadıysanız deneme yanılma yöntemiyle başka kişilerin profil bilgileri ele geçirilebilir.
Yukarıda yer alan örneklerde ki gibi açıkları minimize edebilmek için aşağıdaki yöntemleri kullanabilirsiniz ;
- Database tarafına herhangi bir foto,metin,dosya ismi kaydederken kesinlikle direkt ismiyle kaydetmeyin. Herhangi bir şifreleme algoritmasına tabii tutulup isimlerini şifreleyin.Ve indirirken karmaşık bir link yapısı kullanın. Örnek olarak herhangi bir twitter fotoğraf linki ; https://pbs.twimg.com/profile_images/669434393061146624/LN7_aLtb_200x200.jpg
- İkinci örnekte yer alan site/profil?id=12 gibi bir link yapısı ise bazı kontroller yapılmadığında tehlikeli sonuçlar doğurabilir.Sonucu döndürmeden önce session oturumu kontrol edilerek açık olan oturum ile istek yapılan profil bilgisinin aynı kişi olduğuna emin olun.
Fikir vermesi açısından küçük bir kod paylaşayım ;
Bu tarz küçük fakat önemli ayrıntılar bazen gözden kaçabiliyor.Login yapıldıktan sonraki ve önceki aşamaları , linklerden dönen sonuçları ve linklerde gözüken id gibi bilgilerin neler olduğunu kontrol edin.
Sağlıcakla
Yorumlar
Yorum Gönder
Evet şimdi yorumlar ;