Dijital dönüşümün hızlanmasıyla birlikte, gerek kurumsal gerekse son kullanıcıya yönelik birçok hizmet ve süreç web uygulamalarıyla yönetilir hale geldi. Bankacılıktan eğitime, sağlıktan ulaşıma kadar pek çok süreç web uygulamaları üzerinden yürüyor. Modern yaşamın kritik bileşenlerinden biri haline gelen bu uygulamaların güvenliğini garanti altına almak ise hizmet sağlayıcıların en önemli görevlerinden biri oldu. Siber güvenlik alanında danışmanlık hizmetleri sunan Innovera, güvenli bir internet deneyimi için web uygulama geliştiricilerin alması gereken güvenlik tedbirlerini 10 maddede özetledi:
1. Güvenli bağlantı ve güncel sertifikalar kullanın
Tarayıcıların adres çubuğunda yeşil bir kutucuğun içerisinde yer alan “Güvenli” ibaresi, bağlı olduğumuz internet sitesinin uçtan uca şifrelendiğini gösteriyor. Bu ibareye sahip olabilmek için ise sitenin “HTTPS” protokolüyle çalışması gerekiyor. Sıradan HTTP sayfalarının sonuna eklenen “S” ibaresi, adını İngilizce güvenlik kelimesinden alıyor ve interneti şifreleyerek güvenli hale getiriyor. Bu yüzden ödeme ve üyelik sayfaları gibi kullanıcı tarafından veri girişi yapılan her internet sayfasında bu protokolün kullanılması gerekiyor. Güvenli internetin gelişmesine öncülük eden Google gibi arama motorları, her internet sitesinin bu protokolü kullanmasını tavsiye ediyor. Güvenli bağlantılar, farklı hizmet sağlayıcılardan satın alınan “SSL Sertifikaları” ile elde ediliyor. Bu sebeple sertifikalandırma süreçlerinde hem güvenilir bir firma ile çalışmak hem de sertifikanın güncel olduğuna emin olmak gerekiyor.
2. Dış ağa açık giriş ekranlarına captcha yerleştirin
Bir siteye üye olurken ortaya çıkan “Ben robot değilim” kutucuğunu hepimiz yakından tanıyoruz. Bu kutucuğa tıkladığımızda, yapay zeka ve makine öğreniminden beslenen algoritmalar internet üzerindeki tüm faaliyetlerimizi kontrol ederek bizim gerçek bir insan olup olmadığımızı kontrol ediyor. Şüpheli bir hareket sezdiğinde ise karşımıza görseller çıkararak bizden doğru seçimleri yapmamızı bekliyor.“Captcha” olarak adlandırılan ve hayatımıza okunması zor harf kombinasyonlarıyla giren bu denetleme sistemini, şirketinizin dış ağa açık olan giriş ekranlarında kullanabilirsiniz. Çoklu yanlış denemelerde hesabı belirli bir süre kısıtlayarak, brute force olarak da bilinen ve sistemlere sızmak için ardı ardına veri girişi yapılması gereken saldırıların önüne geçebilirsiniz.
3. İstemcilerde çerez güvenliğini sağlayın
İnternet üzerindeki her hareketimizde arkamızda bir iz bırakıyoruz. Bu izler pazarlama ve reklam için kullanılabileceği gibi kötü amaçlarla da kullanılabiliyor. Bu sebeple kullanıcıların dijital dünyadaki ayak izleri anlamına gelen çerezlerin (cookie) en iyi şekilde korunduğuna emin olmak gerekiyor. Örneğin çerezlerin samesite başlıklarındaki güvenlik “httponly” ve “secure” kullanarak artırılabiliyor. İnternet sitesinde CSRF ve XSS üzerinden oluşabilecek riskler ise sunucunun başlık (header) bilgilerine “sameorigin (SOP), cross-origin resource sharing (CORS)” ve “http nosniff” ibarelerinin eklenmesiyle minimuma iniyor. Bu işlemler biraz teknik olsa da kısa bir internet araştırmasıyla kolaylıkla uygulanabiliyor.
4. Tahmin edilebilir dizinlerden kaçının
Uygulama sunucusu üzerinde tahmin edilebilir dizin isimleri olmadığından emin olmak, kritik dosyaların güvenliği için oldukça önemli. Dışarıdan erişilmesini istemediğiniz bir dosyanın adını “belge” olarak kaydettiğinizde, site domaininin sonuna eklenen “/belge” kelimesi, herhangi bir kullanıcının ilgili dosyalara erişmesi anlamına geliyor. Bu sebeple dosya ve dizinlere yüksek hassasiyetle yaklaşmaya daha isimlendirme aşamasındayken başlamak gerekiyor.
5. Botlara dikkat edin
Web uygulamanızdaki hassas dizinlerin robots.txt dosyası içinde yer almadığından emin olun. Google, Yandex ve Bing gibi arama motorları tarafından yaratılan ve interneti düzenli olarak tarayan akıllı botlar, her internet sayfasını tek tek tarayıp arama sonuçlarında tüm dünyaya sunmak için durmaksızın çalışıyor. Özel bilgiler içeren ve sizden başka kimsenin görmesini istemediğiniz sayfaların yanlışlıkla bir Google aramasında çıkmasını istemezsiniz. Neyse ki basit robots.txt düzenlemeleri ile bu durumun önüne geçilebiliyor.
6. Güçlü parolalar kullanın
2019 yılında azımsanmayacak sayıda insan halen doğum tarihi ve isimlerinden oluşan kombinasyonlarla parolalar oluşturuyor. Bu parolalar hem kötü niyetli kişiler tarafından rahatlıkla tahmin edilebiliyor hem de dakikada binlerce deneme yapabilen zararlı yazılımlar tarafından kolaylıkla çözülebiliyor. Bu yüzden minimum sekiz karakterden oluşan ve içerisinde sayı, özel karakter, büyük ve küçük harf barındıran güçlü şifreler oluşturmak gerekiyor.
7. Her framework ve kütüphaneyi kullanmayın
İnternet üzerinde çalışan tüm uygulamalar, sayısız framework ve kütüphaneden faydalanıyor. Framework; web uygulamasının ortaya çıkmasını sağlayan çalışma ortamını, kütüphane ise daha önce başkaları tarafından hazırlanmış hazır kod parçacıklarını temsil ediyor. Bu ikili, genellikle yapılacak işin ihtiyacına göre projenin başlangıç aşamalarında seçiliyor. Web uygulamanızda bir kütüphane kullandığınızda, aslında dışarıdan destek almış oluyorsunuz. Ekibinizden olmayan, farklı bir geliştirici tarafından yazılmış kod parçacıklarını projenize dahil ediyorsunuz. Kısacası seçici olmakta büyük fayda var. Güncel versiyonlara sahip olmayan ya da günümüz teknolojileriyle uyumlu çalışmayan kütüphane ve framework’ler yarardan çok zarar getirebiliyor.
8. Formlarınızı güvende tutun
Uygulamalarda bulunan form işlemlerinde, kullanıcılarınız için rastgele üretilmiş eşsiz bir token (geçici anahtar) ile “Siteler Arası Talep Sahteciliği (CSRF)” zafiyetine karşı önlem alabilirsiniz. Bu token’lar kullanıcıların yapmak istedikleri işlem için yalnızca bir defa üretilir ve bir süre sonra kullanım dışı kalır. Böylelikle uygulamanızda uçtan uca güvenlik sağlar.
9. Temizleme işlemi (Sanitize)
Kullanıcılarınızdan gelen tüm verilerin kontrol edilerek işleme alındığından emin olmak adına temizleme işlemi (Sanitize) yapılmalıdır. Sanitize, girdinin kabul edilebilir bir formata çevrilmesi işlemidir. Beyaz liste mantığı ile sanitize işlemine örnek vermek gerekirse, kullanıcıdan alınan TCKN verisinin içinde geçen ve sayı olmayan tüm karakterlerin silinmesidir. Kara liste mantığı ile sanitize işlemine örnek vermek gerekirse kullanıcıdan alınan isim parametresi gibi alanlarda bulunan ve uygulama için risk oluşturabilecek (tek tırnak, çift tırnak vb.) karakterlerin silinmesi gösterilebilir. Veri denetimi gerçekleştirirken, uygun alanlarda beyaz liste mantığı ile önlem alınmasını önermekteyiz.
10. Detaylı hata mesajı göstermeyin
Ortaya çıkan hata mesajlarını tek tek kontrol ederek, kullanıcılarınıza gereğinden fazla bilgi sunan ayrıntılı hata mesajlarının verilmesini engellemeniz gerekiyor. Zira bir siber saldırgan, detaylı bir hata mesajından sisteminizin nasıl çalıştığına ilişkin fikir edinebilir. Bu sebeple hata ayıklama verilerini, incelenmek üzere harici bir kayıt dosyasına yönlendirmenizi tavsiye ediyoruz.
Yorumlar