Web Uygulamalarında Güvenlik

Web güvenliği dediğimiz zaman, web uygulamalarının ve ağ alt yapılarının güvenliği akla gelmektedir. Ancak bunu gerçek zamanlı olarak uygularken birçok durum göz ardı edilebilmektedir. Bu yazı içerisinde genel olarak bulunan güvenlik açıkları nelerdir ve ne tür tehlikelere karşı dikkatli olmamız gerektiği hakkında konuşacağız.

İnternet; iletişimde temel bir faktördür. Mevcut hizmetlerin, bilgilerin kötüye kullanımı ve erişimine yönelik görünür potansiyel riskleri beraberinde getirir. Bilgi işlem hizmetlerini erişim ağlarına açan herhangi bir kuruluş, bilgilerin ve kaynakların korunmasını sağlamak için önemli bir çaba harcamak zorunda kalmaktadır.     

Web uygulamalarında 5 adımda güvenlik

Erişilebilirlik: Yetkili kullanıcıların veya işlemlerin gerektiğinde uygulamaya erişimlerinin sağlanmasını garanti eder.

Kimlik doğrulama: Kimlik doğrulama bir kullanıcının iddia ettiği kişi olduğunu ve verinin geldiği kaynağı garanti eder.

Bütünlük: Bilgi varlığının izinsiz olarak değiştirilmediğini garanti eder.

Gizlilik: Hassas bilgilerin yetkisiz kişi, varlık veya işlemlere açıklanmadığını, erişilebilir olmadığını garanti eder.

İzlenebilirlik: Bir kullanıcının eylemlerinin yalnızca o kullanıcıya atfedilebileceğini garanti eder.

Burada bahsedilen tüm maddeler bir bütün halinde uygulandığında gerçek anlamda bir güvenlik önlemi alındığından söz edilebilir ancak şu kesinlikle unutulmamalıdır, zafiyetler her zaman değerlendirilebilir ve sistemler sürekli olarak bu dinamik döngüye uygun şekilde ilerlemelidir.

“Sistemin güvenliğinden çok kahveye para/zaman harcarsanız, saldırıya uğrarsınız. Dahası, saldırıya uğramayı hak ediyorsunuz.“ – Richard Clarke

Web uygulamanızı güçlendirmeye nereden başlamanız gerekir?

Saldırganlar aktif olarak bu tür kusurları hedeflediğinden, mevcut kod bu güvenlik açıkları için derhal kontrol edilmelidir.

Geliştirme projeleri, tasarım belgelerinde bu güvenlik açıklarını kontrol etmeli ve kodu geliştirme aşamasında test etmelidir. Test, hiçbir güvenlik açığının ortaya çıkmamasını ve var olanların kaldırılmasını sağlar.

Denetim otoriteleri, yazılım üreticilerini eğitmek, güvenli bir geliştirme politikası oluşturmak, güvenli tasarım ve geliştirme mekanizmaları, sızma testi, kaynak kodun güvenlik incelemesi gibi güvenlik faaliyetleri için bütçelerinde ayrıca zaman çizelgelerinde yer açmalıdır.

Yaygın Web Uygulaması Güvenlik Zafiyetleri

Bir şirket olarak, web siteniz çevrimiçi merkezinizdir. Web sitenizdeki bir güvenlik ihlali, birisinin ofisinize girmesi, iş kayıtlarınızı ve müşterilerinizle ilgili bilgileri çalması gibidir. Hırsız bu verilerle sizi ya da müşterilerinizi dahil etmek için her şeyi yapabileceği için risklidir.

İşte en yaygın web güvenlik açıkları ve bunlarla nasıl başa çıkılacağı hakkında bilgiler:

SQL Injection

SQL Injection, kötü niyetli SQL deyimlerini içeren bir web saldırısıdır. Başarılı bir SQL saldırısı ile bir bilgisayar korsanı, içerdiği verileri kopyalamak, eklemek, düzenlemek ya da silmek için web sitenizin SQL veritabanına erişebilir. Çoğu web sitesi bir SQL veritabanı kullandığından, SQL enjeksiyonu en yaygın web güvenlik açığıdır.

Kullanıcı girişine dikkat ederek SQL enjeksiyonunu halledebilirsiniz. Herhangi bir kullanıcı girişine güvenmemek idealdir. Sitenizde izin vermeden önce tüm kullanıcı girdilerinin doğrulandığından emin olun.

Not: “SQL, veri tabanı içerisinde bulunan verileri yönetmek ve tasarlamak için kullanılan bir dildir.”

Broken Authentication

Bozuk kimlik doğrulaması, çeşitli web güvenlik açıklarıyla ilgilidir ancak hepsi web sitelerinde sunulan kimlik doğrulama yöntemlerini atlamayı içerir. Bozuk kimlik doğrulama saldırılarının çoğu, kimlik bilgisi dolgusunu, uygunsuz oturum zaman aşımlarını, şifrelenmemiş ve hashlenmiş parolaları içerir. Saldırganların kimlik doğrulamasını atlamasına ve meşru kullanıcıları taklit etmesine olanak tanır.

Çok faktörlü kimlik doğrulama, bozuk kimlik doğrulama saldırılarıyla başa çıkmanın en iyi yollarından biridir. Bu nedenle, bir kullanıcının kimlik bilgilerini (kullanıcı adı ve parola) bilmek, hesabına erişmek için yeterli olmayacaktır. Ayrıca veritabanınızda depolanan kullanıcı parolaları yalnızca şifrelenmemeli, aynı zamanda karma hale(hash) getirilmelidir.

Not: “Hashlemek, bir metnin bir daha geri döndürülemeyecek bir şekilde şifrelenmesidir şeklinde kısaca anlatabiliriz.”

Örnek: Şifre : asd1234 => Hashed Şifre : 7c52b6227c466b0b50a1c07e77183d7e

Cross-Site Scripting

XSS saldırıları olarak da bilinen bu, istemci tarafı kod enjeksiyonuyla ilgili bir web güvenlik açığıdır. Tipik olarak, saldırı, bir web sayfasına, web sayfası ziyaret edilir edilmez yürütülecek olan kötü amaçlı kod ekler. Bu bir girdi güvenlik açığıdır ve öncelikle kullanıcı geri bildirimine izin veren web sitelerinde ortaya çıkar.

SQL enjeksiyonu gibi, XSS de kullanıcı girişi izlenerek çözülebilir. Her kullanıcı girişi filtrelenmeli yalnızca güvenli ve geçerli girişlere izin verilmelidir. Ek olarak çıktıdaki verileri kodlayabilir, bir İçerik Güvenliği Politikasından (CSP) yararlanabilirsiniz. Politika, XSS saldırısının verebileceği zararı azaltmaya yardımcı olabilir.

XSS ile ilgili önlemler için buraya tıklayarak bilgi alabilirsiniz.

Yanlış güvenlik yapılandırması

Bir web sitesi sahibi olarak web sunucunuz için gerekli tüm protokolleri ve güvenlik kontrollerini oluşturmadığınızda onu web saldırılarına karşı savunmasız hale getirirsiniz. Bu bir güvenlik yanlış yapılandırmasıdır. Ayrıca bu güvenlik kontrollerini uygulayabilir ve bunu sizi hala savunmasız bırakan bir ya da iki hata ile yapabilirsiniz.

Güvenlik yanlış yapılandırmasının düzeltilmesi nispeten kolaydır. Öncelikle sitenizin nasıl çalıştığını anlamanız, siteniz için en iyi güvenlik önlemlerini seçmeniz ve her şeyin doğru bir şekilde uygulandığından emin olmanız gerekir. Güçlü yönetici parolaları kullanın. Sunucunuza yetkisiz erişimi engelleyin. Herhangi bir güvenlik açığını tespit etmek ve düzeltmek için ara sıra taramalar yapabilirsiniz.

Insecure Direct Object References (IDOR)

Bir saldırganın sitenizde Güvenli Olmayan Doğrudan Nesne Referansı (IDOR) bulması zor olacaktır. Bunu yaparlarsa, kolayca istismar edebilirler ve sonuçları ağır olabilir. Bu güvenlik açığı, doğrulanmamış kullanıcı girişi kullanılarak yetkisiz erişim içerir. Bilgisayar korsanları, web sunucunuzdaki nesnelere doğrudan başvurabilir.

Yapabileceğiniz ilk şey, IDOR’u algılamak ve nesne referanslarını güvenli karmalar ya da dolaylı nesne referansları kullanarak değiştirmektir. Ardından uygun oturum yönetimini sağlayın ve her zaman nesne düzeyinde kullanıcı erişim kontrollerini kontrol edin.

Siteler arası istek sahteciliği

Bir kullanıcı bir web sitesini ziyaret ettiğinde, tarayıcı her istek için otomatik olarak kimlik doğrulama belirteçleri gönderir. Saldırgan, kullanıcının tarayıcısı ile ziyaret edilen web sitesi arasındaki etkileşimleri değiştirmek için kötü amaçlı bir web sayfası kullanabilir. Örneğin; ziyaret edilen web sitesi için kullanıcının önceki kimlik doğrulama tanımlama bilgilerine erişmelerine olanak tanır.

Oturum kimlik doğrulaması, siteler arası istek sahtekarlığıyla başa çıkmanıza yardımcı olabilir. Siteye istek gönderen kişinin gerçek kullanıcı olduğunu doğrulamak için her etkin kullanıcı oturumuna belirteçler düzenleyerek elde edilebilir. Belirteç tabanlı hafifletme olarak bilinir. Durum bilgisi olan ya da durum bilgisi olmayan belirteç modellerini kullanabilirsiniz.

Sonuç olarak web siteleri ve internet teknolojileri gün geçtikçe daha da karmaşık hale geliyor. Bu da, internet üzerinden yapılan işlemlerin daha güvenli hale getirilmesini zorlaştırıyor. Web sitelerinin güvenliği her zaman öncelikli bir konu olmalıdır. Eğer yeteri seviyede önlem almazsak, kullanıcı bilgilerinin kaybedilmesi veya kötü amaçlı saldırılarla karşılaşmamız kaçınılmaz hale gelebilir. Bu nedenle, web sitelerinin düzenli olarak sızma testleri yapılması, güvenlik açıklarının tespit edilmesi ve giderilmesi son derece önemlidir.

Unutmamalıyız ki, internet evreni sürekli gelişiyor. Güvenliği sağlamak için de sürekli olarak adımlar atılması gerekiyor. Siz de adım atmayı ihmal etmeyin.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir