Daha Güvenli Web Uygulamaları İçin 10 Altın Kural
Dünyayı şekillendiren uygulamaların güvenliği şirketlerin kritik önceliği haline gelirken, Innovera web uygulama güvenliği için 10 maddeyi açıkladı.
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. Türkiye'nin öncü siber güvenlik entegratörü 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.