Diğerlerinin söylediği gibi, her ikisini de yapmalısınız. İşte nedeni:
Müşteri Tarafı
Ortalama bir kullanıcıya daha iyi geri bildirim verebildiğiniz için önce istemci tarafında girişi doğrulamak istiyorsunuz . Örneğin, geçersiz bir e-posta adresi girip bir sonraki alana geçerse, hemen bir hata mesajı gösterebilirsiniz. Bu şekilde kullanıcı formu göndermeden önce her alanı düzeltebilir .
Yalnızca sunucuda doğrulama yaparsanız, formu göndermeleri, bir hata iletisi almaları ve sorunu bulmaya çalışmaları gerekir.
(Sunucunun, kullanıcının orijinal girdisi doldurulmuş olarak formu yeniden oluşturmasıyla bu acı hafifletilebilir, ancak istemci tarafı doğrulaması hala daha hızlıdır.)
Sunucu Tarafı
Sunucu tarafında doğrulamak istiyorsunuz çünkü JavaScript'inizi kolayca atlayabilen ve sunucuya tehlikeli girdi gönderebilen kötü niyetli kullanıcıya karşı koruma sağlayabilirsiniz.
Kullanıcı arayüzünüze güvenmek çok tehlikelidir. Yalnızca kullanıcı arayüzünüzü kötüye kullanmakla kalmaz, kullanıcı arayüzünüzü, hatta bir tarayıcıyı kullanmıyor olabilirler . Kullanıcı URL'yi manuel olarak düzenler veya kendi Javascript'ini çalıştırırsa veya HTTP isteklerini başka bir araçla değiştirirse ne olur? curl
Örneğin bir komut dosyasından veya komut dosyasından özel HTTP istekleri gönderirlerse ne olur ?
( Bu teorik değildir; örneğin, POST
kullanıcı her şirketin arama formunu doldurmuş, sonra toplanmış ve sıralanmış gibi istek göndererek kullanıcının aramasını birçok ortak havayoluna, otobüs şirketine vb. Yeniden gönderen bir seyahat arama motorunda çalıştım. Bu şirketlerin JS formu hiçbir zaman yürütülmedi ve döndürülen HTML'de hata mesajları vermeleri bizim için çok önemliydi. Tabii ki, bir API güzel olurdu, ama yapmamız gereken buydu. )
Buna izin vermemek sadece güvenlik açısından naif olmakla kalmaz, aynı zamanda standart dışıdır: bir istemcinin istedikleri şekilde HTTP göndermesine izin verilmeli ve doğru şekilde yanıt vermelisiniz. Buna doğrulama da dahildir.
Sunucu tarafı doğrulaması da uyumluluk için önemlidir - tarayıcı kullanıyor olsalar bile tüm kullanıcılar JavaScript etkin olmayacaktır.
Zeyilname - Aralık 2016
Veritabanının geçerli durumuna bağlı olduğu için sunucu tarafı uygulama kodunda düzgün bir şekilde yapılamayan ve istemci tarafı kodunda tamamen imkansız olan bazı doğrulamalar vardır . Örneğin, "bu kullanıcı adını başka hiç kimse kaydetmedi" veya "yorum yaptığınız blog yayını hala mevcut" veya "mevcut rezervasyonunuz istediğiniz tarihlerle çakışmıyor" veya "hesap bakiyenizde bu satın alma işlemini karşılamaya yetecek kadar var ." Yalnızca veritabanı, ilgili verilere dayanan verileri güvenilir bir şekilde doğrulayabilir. Geliştiriciler bunu düzenli olarak berbat ediyor , ancak PostgreSQL bazı iyi çözümler sunuyor .