web-gelistirme-sc.com

"Kullanıcı adı ve / veya Parola Geçersiz" - Web siteleri, kullanıcıya hangisinin yanlış olduğunu bildirmek yerine neden bu tür bir mesaj gösteriyor?

Bir kullanıcının tipik bir siteye giriş yaptığını, kullanıcı adını ve şifresini girdiğini ve girdilerinden birini yanlış yazdığını varsayalım. Çoğu olmasa da, sitelerin çoğunun tek bir girişin yanlış olmasına rağmen aynı mesajı ("Geçersiz kullanıcı adı veya şifre" satırları boyunca) gösterdiğini fark ettim.

Bana göre, hangi girdinin yanlış olduğunu kullanıcıya bildirmek yeterince kolay görünüyor ve bu da sitelerin neden yapmadığını merak etmemi sağladı. Peki bunun bir güvenlik nedeni var mı yoksa sadece norm haline gelen bir şey mi?

103
bobble14988

Kötü niyetli bir kullanıcı, admin/admin gibi yaygın kullanıcı adı/şifre kombinasyonlarını tahmin ederek bir web sitesine saldırmaya başlarsa, saldırgan, kullanıcı adının geçerli olduğunu, "Kullanıcı adı veya şifre geçersiz" yerine "Şifre geçersiz" iletisini döndürdüğünü bilir.

Bir saldırgan kullanıcı adının geçerli olduğunu biliyorsa, çabalarını SQL enjeksiyonları veya şifreyi kaba kuvvetlendirme gibi teknikler kullanarak söz konusu hesaba yoğunlaştırabilir.

128
user10211

Diğerlerinin de belirttiği gibi, yanlış kullanıcı adı veya şifre olup olmadığını bilmenizi istemiyoruz, böylece kaba kuvvet veya sözlük saldırılar ..

Bazı web siteleri, kullanıcılarına yeşil güvenlik açısından hala hangisinin başarısız olduğunu bildirmek isterse, web sitesini uyaran " honeypot " kullanıcı adlarını (Yönetici, yönetici vb.) Uygulayabilirler. birisinin web sitesini gözetlediğini söyler. Hatta bu "bal küpü" kullanıcı adlarından biriyle giriş yapmaya çalışırlarsa IP adreslerini yasaklamak için bir mantık bile kurabilirsiniz. Ben aslında bir web sitesi vardı ve kaynak kodunu "Richard: Kullanıcı adı: peynir Şifre: Burger123" unutmaya devam gibi bir HTML yorum koymak bir kişi biliyorum giriş kutusunun yakınında kullanmak için herhangi bir IP adresini izlemek amacıyla kullanıcı adı/şifre. Bir web sitesi geliştirirken izleme mantığı eklemek çok eğlenceli.

Tabii ki, geçersiz giriş denemelerini kaydetmek ve bu IP adresleriyle başa çıkmak için uygun mantığı eklemek de işe yarar. Bazılarının benimle aynı fikirde olmayacağını biliyorum, ancak web sitesinin türüne bağlı olarak, farklı saldırı türlerini önlemede ek güvenlik önlemleri eklediğiniz sürece kullanıcıya bildirmenin çok büyük bir şey olduğunu düşünmüyorum.

24
ROFLwTIME

En sevdiğim güvenli uygulaması benim kullandığım bir banka tarafından yapılıyor. Kullanıcı adımı doğru girersem "Welcome Jimbob!" ve sonra güvenlik sorularını yanıtlamamı istiyor (bu bilgisayarda bu tarayıcıdan daha önce hiç giriş yapmamışsam), güvenlik sorularını doğru bir şekilde yanıtlamamı bekleyin ve ardından güvenlik resmimi/altyazımı görmeme ve şifremi girmeme izin verin. Yanlış kullanıcı adı yazarsam, "Welcome Bessie/Kareem/Randal!" görüntülenen ad çok nadirdir - yine de aynı kullanıcı adı için her zaman aynı ad olacaksınız (genellikle bir veya iki kullanıcı adı arasında emin değilim ve yanlış olan sürekli bana Frenshelia diyor). Ben oldukça nadir bulunan adlar uzun bir listede bir kullanıcı adı ile benzersiz bir şekilde eşleşen herhangi bir girilen kullanıcı adı için uygulanan bir tür kriptografik olmayan karma uygulandığını varsayalım. Bu, meşru kullanıcıların yanlış kullanıcı adını yazıp yazmadıklarını bilmelerini sağlar (Bessie gibi nadir bir adınız olsa bile; çalışanlar için açık hale getirmeden rastgele rastgele tahmin ettiğiniz yanlış kullanıcı adının haritalarını rastgele tahmin etmesi pek olası değildir) kullanıcı adının bulunmadığı rasgele hesapları bulmak için.

Bir kenara: Güvenlik tiyatrosunda sınır gibi görünen güvenlik soruları/güvenlik imajı kısmından özellikle hoşlanmıyorum. Ortadaki adam (MITM) saldırısı yapan karmaşık bir saldırgan (örneğin, web tarayıcınıza sahte sertifikalar yükledikten sonra; ve bank.com.com'unuzu IP adresine yönlendirmek için DNS/ARP kimlik sahtekarlığı) günlüğe kaydetmeyi deneyene kadar bekleyebilir daha sonra bilgisayarlarında gerçek siteye giriş yapan otomatik bir komut dosyası bulundurun, güvenlik sorularını alın, seçilen güvenlik sorularını size geri görüntüleyin, cevapları siteden tarayıcılarından kendilerine geri gönderin, güvenliği almak için bekleyin güvenlik resmini size geri sunun ve ardından sizden giriş yapmak ve kötü amaçlı şeyler yapmak için şifreyi kullandıkları noktada şifreyi girmenizi bekleyin. Soruları + imajı vermek, işlemi, saldırıya uğramış çeşitli kullanıcı adları için gerçek zamanlı olarak yapılması gereken bir saldırıya dönüştürerek ve muhtemelen şüpheli bir imza bırakarak tüm güvenlik görüntülerini toplamak için dünyadaki tüm zamanlara sahip olmaktan daha zor hale getirir. .

18
dr jimbob

Diğer yanıtlar bu davranışın arkasındaki güvenlik nedenleri hakkında iyi bir fikir vermektedir. Her ne kadar doğru olsalar da, en azından bazı web sitelerinin yetkilendirme rutininin neyin yanlış olduğunu söylemek imkansız şekilde programlandığından eminim - giriş veya şifre.

Örnek sorgu:

SELECT COUNT(*) FROM users WHERE login = 'john' AND hash = '2bbfcdf3f09ae8d700402f36913515cd'

Başarılı kayıt girişimi 1 ve böyle bir isme sahip kullanıcı yoksa 0 döndürür veya bu kullanıcının farklı bir şifresi var. Koşulun hangi kısmının başarısız olduğunu söylemenin bir yolu yoktur. Hata mesajı programcısı görüntüleme söz konusu olduğunda, dürüstçe size bir şeylerin yanlış olduğunu söyler ve tam olarak ne olduğundan emin değildir.

Şahsen birkaç PHP tabanlı web sitesinde benzer sorgular gördüm, bu yüzden nedeninin gerçekten kimlik doğrulama sürecinin kodlandığı yoldan geldiğinden eminim.

13
Dyppl

Ancak, bir user enumeration attack (ve dahası). Buna Timing attack. Saldırgan, kimlik doğrulama isteğinin yanıt süresini ve geçerli ve geçersiz bir oturum açma arasında nasıl farklılık gösterdiğini ölçer.

  1. Nanosaniye Ölçeği Uzaktan Zamanlama Saldırıları Açık PHP Uygulamalar: Onları Ciddiye Alma Zamanı?
    http://blog.astrumfutura.com/2010/10/nanosecond-scale-remote-timing-attacks-on-php-applications-time-to-take-them-seriously/

  2. Zamanlama saldırılarında bir ders
    http://codahale.com/a-lesson-in-timing-attacks/

  3. Zamanlama saldırılarını önlemek için PHP içinde sabit zaman dizesi karşılaştırması)
    https://codereview.stackexchange.com/questions/13512/constant-time-string-comparision-in-php-to-prevent-timing-attacks

Demek istediğim, bu tür bir tehdide karşı başvurunuzu korumak istiyorsanız böyle bir mesajın yeterli olmaması.

8

Bunun arkasındaki güvenlik nedeni, geçerli kullanıcı adlarını bulmak çok daha kolay hale geliyor.

5
Lucas Kauffman

Daha önce verilen tüm harika cevaplara ek olarak, yetkisiz kullanıcılara istenmeyen bilgiler vermemeniz gerektiğini söyleyen genel bir güvenlik ilkesi vardır. Yani "kimlik doğrulama verileriniz geçerli değil" veya hangi bölümün geçerli olmadığını açıklamak isterseniz - her zaman ilkini seçmelisiniz. Bazı çok kötü kriptografik saldırılar, "yardımcı" olmaya çalışan uygulama tarafından sağlanan en küçük miktarda hata bilgisine dayanır - bkz Oracle saldırısı dolgus . Bu nedenle, her zaman yetkisiz kuruluşa açıklanan en küçük olası bilgileri tercih etmek iyi bir fikirdir - yani, kullanıcı adı/şifre kombinasyonu iyi değilse, her zaman "kullanıcı adı/şifre iyi değil" şeklinde yanıtlarsınız ve hiçbir zaman açıklamazsınız. veri. Belirli bir durumda (kullanıcı adının herkese açık olduğu gmail gibi) önemli olmasa bile, varsayılan olarak benimsenmesi iyi bir uygulamadır.

5
StasM

Diyelim ki rastgele bir kullanıcı adı ve eşit derecede rastgele bir şifre giriyorsunuz (girdiğiniz şifreyi not edin). Artık şifreler n kullanıcı arasında ortak olabilir. Yani, web sitesi şifrenin doğru olduğunu söylüyorsa ... o zaman bir sonraki adımın ne olduğunu biliyorsunuz .. giriş adlarını almak gibi gerçek kullanıcılar arasında kargaşa oldukça kolaydır.

4
aayush anand

Belirsiz cevap vermek kullanıcı numaralandırması saldırısını önlemek için kullanışlıdır.

Bazı durumlarda saldırganın kullanıcı hesabından ödün vermesine gerek yoktur. Kullanıcının hesabına sahip olduğu bilgiler başka bir işlem yapmadan yeterlidir. Örneğin, müşterilerinin rekabetçi web mağazasında hesabı olduğu ticaret için değerli bilgilerdir.

4
Jakub Šturc

En çok söyledikleri gibi çeşitli cevapları takdir ediyorum, ancak bazen Uygulamalar ne yanlış UserName veya Password farkında değildir. Özel olarak TOA (Tek Oturum Açma) uygulamak için jeton tabanlı kimlik doğrulaması durumunda, ör. IBM Tivoli Access Manager başvurunuz başarılı bir jeton alır veya bir hata alır.

4
Niks

giriş bir e-posta adresi ise, bir kişinin bir web sitesinde kayıtlı olduğunu bulmak kolaydır - Bunu istemeyebilirim >> Bazen insanlar giriş kimliği olarak e-posta kimliğini kullandıklarında kaydettikleri web siteleri için e-posta hesabı gerçek şifresini kullanır :)

3