Web uygulaması Kimlik Doğrulama / Güvenlik için en iyi uygulamalar (Herhangi Bir Platform)


12

Bugün yöneticimden bir web formu uygulamasının kimlik doğrulaması için kabul edilebilir bir tasarım olarak kabul edilen tasarım hakkındaki düşüncelerimi sordum, özellikle de birçok popüler tarayıcının doğası ile ilgili olarak tipik kullanıcı adı parola giriş alanlarınız için "Parolayı Anımsa" .

Kabul edilebilir olduğunu düşündüğüm bir cevap bulmakta zorlanıyorum. Sony'nin güvenlik kusurlarını ışığında, insanlarda depolanan veriler daha düşük bir duyarlılığa sahip olsa da, gerçekten dikkatli olmak istiyorum. Sosyal güvenlik numaralarını ve hatta adresleri saklamıyoruz, ancak telefon numaralarını, e-posta adreslerini ve bir ziyaretçinin fotoğrafını saklıyoruz.

Bir kullanıcının genel bir terminalde Parolayı Basitçe Hatırlayabileceğinden endişe duyar, o zaman birisi bu terminale atlayabilir ve verileri yetkisiz bir şekilde görüntülemeye veya değiştirmeye başlayabilir. Ancak, en azından Windows iş istasyonlarında, tarayıcının Windows kullanıcı hesapları arasında "Parolayı Anımsa" olmayacağından oldukça eminim.

Bunun ötesinde sunucu tarafında tek yönlü bir şifre şifrelemesi uyguluyorum (veritabanında şifrelenmiş şifreyi saklayın, sunucuda kullanıcı tarafından sağlanan şifreyi şifreleyin, veritabanından şifrelenmiş dizeyle karşılaştırın). SSL şifrelemesini dahil etmek için acil bir plan yoktur, ancak bu hala bir seçenektir.

Bu yaklaşımla ilgili önemli güvenlik kusurları var mı? Daha iyi bir öneriniz var mı?


Tek yönlü şifreli (yani karma) şifreyi saklarken, güçlü bir karma kullandığınızdan (yani MD5 değil) veya şifreyi tuzladığınızdan emin olun (bkz. Stackoverflow.com/questions/420843/… ) veya her ikisi.
Jordan Reiter

OWASP web sitesine ( owasp.org ) bakın. Çeşitli protokoller için "hile sayfaları" dahil olmak üzere çok sayıda yararlı güvenlik bilgisine sahiptirler.
Ralph

Form tabanlı web sitesi kimlik doğrulaması için bazı yönergeler burada stackoverflow.com/a/477578/463478
Yalnızca Siz

Yanıtlar:


13

Bazı üst düzey ipuçları:

  1. Yalnızca ihtiyacınız olan verileri depolayın
  2. Hassas verileri (SSN, şifre, kredi kartı numarası vb.) Saklarken daima şifreleyin
  3. Hassas verileri iletirken / alırken trafiği daima SSL kullanarak şifreleyin
  4. Bilginin duyarlılığı konusunda şüpheniz varsa şifreleyin
  5. Kullanıcı girdisine güvenme (birisi kötü bir şey girmeye çalışır)
  6. Verilerinize güvenmeyin (birisi veritabanında değiştirebilir - örneğin kötü amaçlı komut dosyası enjekte edebilir)
  7. Kendi şifrelemenizi atmayın
  8. Uygulamaları / veritabanlarını barındıran sunucuların güvenliğini sağlama
  9. Güvenlik uğruna son kullanıcıların yükünü artırın (şifre kısıtlamaları, asla şifreleri açığa vurmayın, e-posta ile URL göndermeyin, oturum süresini azaltın, vb.)

Size önerim, Web uygulamalarının güvenliğini sağlamak için bir kitap almak olacaktır. Tek bir cevap / blog / makalede iletilecek çok fazla bilgi var. Sadece şifreleme konusu önemlidir.


Kişinin kendi şifrelemesini yapmak yerine SSL kullanmanın ardındaki neden nedir? WS-Security gibi bir şifrelemeyi kendi şifrelemenizi kullanarak mı kullanacaksınız? SSL kurmak acı verici olabilir.
Bay Jefferson

Bu iyi bir kontrol listesi. Üzerinde daha fazla oy olmadığına şaşırdım.
Kristofer Hoch

2
@ Mr.Jefferson% 99.999999 "ASLA kendi şifrelemenizi devretmek" istediğiniz zaman diyebilirim.
Zach Leighton


1

İyi olman gerektiğini söyleyebilirim.

Çoğu kullanıcı, şifrelerini genel bir terminale kaydetmeyecek kadar parlak olacak ve şifreler profil başına saklanacaktır. Yapışkan bir nota kolayca yazabildiklerini veya zayıf bir şifre kullanabildiklerini unutmayın.

Giriş sayfası SSL üzerinden şifrelenmezse, bir saldırganın ağ üzerinden geçerken bu şifreyi koklaması çok zor olmaz. Parola veritabanında hash iyi bir iş, potansiyel bir saldırganın herkesin parolalarını görmesini engelleyecektir (kullanıcının bulunduğu diğer sitelerde oturum açmaya çalışmak için e-posta adresiyle kullanabilirler).

Hala isterseniz, Chad'in işaret ettiği gibi tarayıcının davranışını devre dışı bırakmanın yolları vardır. Bunu sadece bankamın web sitesinde ve Microsoft'un Live sisteminde gördüm.


Harika gönderi, kullanıcı adının e-posta adresi olmayacağını, ancak kullanıcının sistemde saklanan bir e-posta adresine sahip olacağını eklemeyi unuttum. Komik olsa da, Facebook gibi popüler siteler bile e-posta addys ve şifreler için paket koklamaya duyarlı olduğundan bahsediyorsunuz.
maple_shaft

Ayrıca, uygulamamdaki kötü bir güvenlik modeli için mutlaka bir "mazeret" olarak Facebook'taki güvenlik kusurlarına işaret etmediğimi de eklemek istiyorum. Joey'nin annesi, R filmlerini izlemesine izin verdiği için doğru
yapmıyor

1

Belirli bir noktada, bir kullanıcıyı kendisinden koruyamazsınız (yasal olarak zorunlu değildir). "Parolayı hatırla" işlevselliği riskli olabilir, ancak kullanıcı tarafından üstlenilen bir risktir. Aynı şekilde, kullanıcı şifresini birden fazla hizmet için tekrar kullanmaya karar verirse, bu riski de üstlenir. Ayrıca, kullanıcılar bunu sık sık yapsalar bile, şifrelerini yapışkan bir not üzerine yazmamaları ve monitörlerine yapışmamaları konusunda uyarmanız gerekmez.

Yani, birisi kuralları başarılı bir şekilde dava edip değiştirene kadar. Ayrıca bkz: "Uyarı: içindekiler sıcak olabilir".


0

Tarayıcının bir şifreyi hatırlayıp hatırlamadığını güvenilir bir şekilde kontrol edebileceğinizi sanmıyorum. Tarayıcının bunu yapıp yapmadığı sadece elinizin dışında. Ayrıca sizin için büyük bir güvenlik riski oluşturmaz . Her zaman saldırıların geçerli girişlerden yapılabileceğini varsaymalısınız. Birisi geçerli bir giriş kullanıcısı / geçişe sahip olduklarını varsaymayın çünkü onlar iyi olmayacaktır. Sonuçta, şifrelerin yanlış ellere geçmesinin birçok yolu vardır.

Tahmin edebileceğiniz şey, giriş formunuzdaki alan adlarını her seferinde rastgele belirlemektir. Bunun yerine, <input name="username"benzer bir şey kullanın <input name="user658667587". Bu, önbelleğe alınmış kullanıcı adlarını oldukça işe yaramaz hale getirir. Ama tepenin buna değip değmeyeceğini bilmiyorum. Cabası inconveniencing kullanıcıları öyle kamu makinelerde.

Eğer son derece güvenlik duyarlı bir durumda (bankacılık, yatırım) sadece oturum açma sırasında insanlara onun kamu makine olup olmadığını sorabilirsiniz. Ayrıca, kullanıcılar oturum açtıklarında bilinen IP adreslerini önbelleğe alabilir ve farklı bir konumdan giriş yaparlarsa, normal kullanıcı / geçişe ek olarak, türetilemeyen bir pin numarası gerektirir (ör. Resimlere tıklayın). Bankam buna benzer bir şey yapıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.