COMPUTER ENGINEER

Örneklere git
Blog
Next.js / ASP.NET Core / SQL6 dk çalışma
09/ 41

Tarayıcı ve frontend

Formlar: istemci doğrulaması yardımcıdır, güvenlik değildir

Tarayıcıdaki kontrol kullanıcıyı hızlandırır; asıl doğrulama sunucuda tekrar yapılır.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

HTML formları type="email", required ve maxlength gibi niteliklerle temel doğrulamayı ücretsiz verir. JavaScript ile daha zengin kurallar eklenebilir: iki parolanın eşleşmesi, tarih aralığı gibi. Bu kontroller kullanıcıya anında geri bildirim verir ve gereksiz istekleri azaltır.

Ancak istemci tarafındaki her şey değiştirilebilir. Geliştirici araçları, curl veya bir betik formu tamamen atlayıp doğrudan API’ye istek atabilir. Bu yüzden aynı kurallar sunucuda tekrar uygulanır; ASP.NET Core’da bu model doğrulamasıyla yapılır ve hatalı istek controller’a ulaşmadan 400 ile döner.

İyi bir form deneyimi; etiketin alanın üstünde, hata mesajının alanın altında olmasını, hata olduğunda kullanıcının yazdıklarının silinmemesini ve sunucudan gelen alan bazlı hataların doğru alanın yanında gösterilmesini gerektirir. Gönderim sırasında düğme devre dışı bırakılarak çift gönderim de önlenir.

NERESİNDE KULLANIRSIN?

İki katmanlı doğrulama hem iyi kullanıcı deneyimi hem de güvenli veri sağlar.

SIK YAPILAN HATA

Yalnız istemci tarafında doğrulama yapıp sunucunun gelen veriye güvenmesi.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

Temsili örnek
<label for="email">E-posta</label>
<input id="email" name="email" type="email" required autocomplete="email">

Tarayıcı geçersiz e-postayı gönderimden önce yakalar.

Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.

02 / SIRA SENDE

Önce kendin dene.

Mesaj alanı istemcide en fazla 2000 karakterle sınırlı. Bir saldırgan 5 MB’lık mesaj gönderiyor. Hangi katmanlar bunu durdurmalı?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
1) İstek boyutu sınırı (ör. [RequestSizeLimit] veya Kestrel MaxRequestBodySize)
2) Model doğrulaması: [MaxLength(2000)]
3) Veritabanı kolon sınırı: nvarchar(2000)

Savunma katmanlıdır: büyük gövde okunmadan reddedilir, geçen veri doğrulanır, veritabanı son sınırı korur.