Kullanıcılara web sitesinin ve şifrelerin güvenli olduğundan nasıl emin olunur [kapalı]


15

Güvenilir web sitelerinde her zaman "Tüm veriler şifrelenir" veya "Tüm şifreler 128bit şifreleme kullanılarak şifrelenir" vb. Gibi hak talepleri görürüm. Ancak "Tüm şifreler karma" gibi bir hak talebiyle karşılaşmadım.

Web sitemde, rasgele bir tuzla SHA-512 (büyük olasılıkla) karma kullandıktan sonra tüm kullanıcı şifrelerini bir veritabanında saklayacağım. Kullanıcılara parolalarının güvenli olduğundan emin olmak için bir snipet eklemek istiyorum, bu yüzden bir şifre gerektirdiğinden web sitemi kullanmaktan caydırılmayacaklar. Kullanıcıların kendilerini güvende hissetmelerini istiyorum ama herkesin karmaşanın ne olduğunu bildiğini sanmıyorum.

SORU: Ortalama bir kullanıcının karma ve şifreleme arasındaki farkın ne olduğunu bildiğini düşünmediği ve sadece muhtemelen konfor kelime "şifreleme"? Yoksa vermem gereken alternatif bir mesaj var mı?

Bir yan notta, şifreleme ve şifre karma konusunda yeniyim ve sitemi başlatırken bunun yeterince güvenli olup olmayacağını merak ediyordum. Kullanıcılara güvenli olmadığını söylemek istemiyorum. Herhangi bir bilgi büyük mutluluk duyacağız. Teşekkürler.


7
Şahsen iletişim hakkında çok fazla endişelenmeyeceğim: teknik fikirli olanın bulacağı SSS'nin derinliklerine gömülmüş, yaptığınız şeyin teknik bir açıklamasını yazın. Başka hiç kimse gerçekten umursamıyor. Daha da önemlisi, doğru olanı yaptığınızdan emin olun (yeniyseniz zor, ama en azından deniyorsunuz!). Kendi karma işleminizi yapmayın, bcrypt gibi bir şey kullanın .
Joachim Sauer

4
Doğru olan, girişi birleştirmek ve kullanıcıları başka bir kullanıcı adı ve şifre ile rahatsız etmemek.
Jan Hudec

1
OpenID iyidir, ancak kullanıcı adı / passwork de iyidir. Sorununuzun kullanıcıları sitenizin güvenli olduğuna ikna etmek olduğunu sanmıyorum. Deneyimsiz olduğunuz için sahip olmadığınız bir şeyi vaat etmek gibidir. Sadece ortak standartlar uygulayın - profesyonel bilgisayar korsanlarının gelmesini durdurmazsınız, ancak kimse sizi de suçlayamaz.
Hoàng Long

3
@coredump Gerçekten. Parola karması için SHA-512 kullanmak iyi değildir. "Tamam" değil.
Thomas

3
Muhtemelen en iyi, en güncel tavsiyeyi aldığınızdan emin olmak için Bilgi Güvenliği ile ilgili takip soruları sormaya değer . (Bu, burada mutlaka güvenlik uzmanı olmadığımız için kötü tavsiye aldığınız anlamına gelmez).
ChrisF

Yanıtlar:


22
  1. Kullanıcılar umursamıyor.

    İlgilendikleri tek zaman, birilerinin banka hesaplarından para çekmesi ve birkaç gün önce birisinin veritabanınıza tam erişim kazanmış bir bağlantısı olduğu görünüyor.

  2. Neredeyse her durumda böyle mesajlar gördüm, onlar yanıltıcıydı. En komik olanı, her sayfada "askeri sınıf güvenli" tarzı etiketler içeren bir web sitesiydi. HTTP sertifikasının geçersiz olduğunu bildiren bir uyarı oluştu. Oturum açma formunda SQL enjeksiyonu yapıldı. Birkaç hafta sonra, web sitesi saldırıya uğradı, sonra sonsuza dek kayboldu.

    Orijinal şifreyi e-postayla gönderen bir "Parolamı Kurtar" formuna sahip olarak bilgilerin güvenli olduğunu iddia ettikleri web sitelerinin sayısını saymayı bırakıyorum.

    Bu "W3C geçerli XHTML" etiketleri gibi. Neden genellikle bir ana sayfanın bile en az düzinelerce hata ve kod içerdiği web sitelerine yerleştirilir <DIV COLOR='red'>?

Hala kullanıcılara güven vermek istiyorsanız, şöyle bir şey koyabilirsiniz:

Şifreleriniz güvende. Parolanızı göremediğimizi ve asla size bir parola göndermenizi isteyen bir e-posta göndermeyeceğimizi unutmayın.

Ama açıkçası, "Parolamı unuttum; bana e-posta ile gönder" ifadesinin yerini alan "Parolamı sıfırla" formu, herhangi bir kelimeden çok daha güven verici.

Farklı yorumlardan ipuçları:

  • Tekerleği yeniden icat etmeyin: OpenID kullanın. Bu şekilde, karmaları bile saklamıyorsunuz.

    Kaynak: Jan Hudec'in yorumu .

  • Öğrenci olduğunuz için projenizi açık kaynak kodlu yapın. Endişeniz şudur: "Kullanıcıların, okullarındaki bir çocuk tarafından tasarlandığı için şifrelerinin güvenli olmadığını düşünmelerini istemiyorum." , kaynak kodunu okuyarak, güvenliği önemseyen yetenekli bir geliştirici tarafından yazıldığını kontrol edebilmenin daha güven verici bir şey yoktur.

    Kaynak: Jan Doggen tarafından yapılan yorum .


Girdiğiniz bilgiler için teşekkürler. Sorun şu ki, üniversitem için hizmet tasarlayan bir öğrenciyim. Kullanıcıların şifrelerinin güvenli olmadığını düşünmelerini istemiyorum çünkü okuldaki bir çocuk bunu tasarladı. Bcrypt dahil olmak üzere birçok farklı yönteme baktım ve hangisini kullanacağım hakkında henüz karar vermedim. Şimdi yeterince güvenli olacağını düşünüyorum ve eğer birçok kişi kullanmaya başlarsa, gerekirse ekleyebilirim. Şimdilik oraya çıkmaya çalışıyorum. Tekrar teşekkürler.
user2698818

3
@ user2698818 Yapmanız gereken, güvenliği tasarlamak, ardından ayrıntılı olarak açıklayan bir soru yayınlamak ve 'bu güvenli (yeterli)' sorusunu sormaktır. İyi güvenlik tamamen halka açık olabilir.
Jan Doggen

@ user2698818: tamam. Cevabımı düzenledi.
Arseni Mourzenko

6
@JanDoggen: peki ya o olmalıdır yapıyor bir kullanmaktır varolan güvenlik sistemini başkasının tasarlanmış ve sordu "o yeterince güvenli olduğunu". Tercihen bu sorunun uzunca bir süre durduğu ve bu alanlarda birkaç uzmanın dikkatini çektiği bir yer ;-)
Joachim Sauer

12

İlk etapta şifreleri saklamayın! Stack Exchange örneğini takip edin ve kullanıcıların OpenID aracılığıyla kimlik doğrulama sağlayan başka bir sitede kimlikleriyle oturum açmasına izin verin . Çoğu yaygın web çerçevesi için uygulamalar serbestçe kullanılabilir.

Ya da muhtemelen başka herhangi bir protokol. Bazı kurumlar için şirket içi bir proje ise (diğer cevabınızdaki yorumunuzun önerdiği gibi), neredeyse kesinlikle bir LDAP, Kerberos (Windows Active Directory de bu ikisine dayanmaktadır; apache onlara karşı HTTP kimlik doğrulamasını destekler) veya bazı bilgisayar girişi için böyle bir hizmet. Sadece bağlan.

Bu sizi hassas bilgileri depolamanızdan kurtarır (büyük olasılıkla hala izinleri saklamanız gerekir, ancak bunlar o kadar kritik değildir ) ve kullanıcılar başka bir kullanıcı adı ve şifre hatırlamak zorunda kalmazlar, bu yüzden genel olarak kazan-kazan.


1
İzinleri güvenlik açısından kritik olmayan bir şekilde ele alırsanız, bunlardan kaçınabilmem için lütfen hangi siteleri yaptığınızı söyleyin.
orlp

1
Gereklilik parolaları depolamaksa. Ayrıca soru özellikle onları depolamayı soruyor.
Piotr Kula

3
@ppumkin: En iyi cevabın "Z kullanıyorsunuz" olduğu "X'i Y yapmak için nasıl kullanırım" türünde birçok soru vardır. Kabul etmiyorsanız, daha iyi cevap verin ;-).
Jan Hudec

3
@ppumkin Bir benzetme kullanmak için: "Yumruğumla bir kaya kırmaya çalışıyorum, hangi eldivenleri kullanmalıyım?" 19. Alman Süvari Eldivenleri sunmadan önce keski olup olmadığını kontrol edin.
deworde

1
OpenID önermek için çok hızlı olmaktan kaçınırdı. Evet, harika, ancak birden çok OpenID / OAuth sağlayıcısını destekliyorsanız genellikle en iyi sonucu verir. Facebook'un OID sağlayıcısı aracılığıyla giriş yapmanız gereken ve başkalarını kullanamayacağınız birçok teknik forum, blog, Soru-Cevap vb. Facebook etki alanlarının toptan satışını engelleyen bir iş ağındayım ve bu sitelerle çalışamıyorum. OID'yi destekleyecekseniz ve şimdilik yalnızca bir tane kullanacaksanız, hedef kitleniz arasında popüler olan ve bir sistem yöneticisi tarafından engellenmesi olası olmayan bir sağlayıcı seçin . Google ve Windows Live iyi seçimlerdir.
KeithS

2

diyor:

"Bu güvenli."

belirli teknolojik gerçekler veya süreçler hakkında verdiğiniz kişisel bir yargıdır ve bu karar o sırada güvenlik hakkında bildiklerinizle sınırlıdır. Ancak, şifreleme, depolama yöntemi vb.'nin, bilmediğiniz veya henüz bilmediğiniz bile olsa, herhangi bir saldırıya dayanacağını şüphesiz garanti edebilir misiniz?

Anlamı: Bu ifade, belki de farkında olmadan bile güncelliğini kaybetme tehlikesiyle karşı karşıyadır.

Bu nedenle @JoachimSauer tarafından yapılan yukarıdaki yorumu kabul etme eğilimindeyim: Sadece ne yaptığınızı, kullanıcı bilgilerini nasıl kaydettiğinizi açıklayın ve kullanıcılara bunun hizmetinizi nasıl güvenli hale getirmesi gerektiğini söyleyin . Daha sonra kullanıcıların kendilerini yargılamasına izin verin.


İçin, "o güzel" gibi Hayır, öyle değil mi "Bu güvenlidir" "kişisel" veya öznel bir ifade değil bana . Aslında "neyle ilgili" veya "hangi saldırılardan korunduğunu" veya "hangi bağlamda hangi seviyede" belirtmeden anlamsal olarak boş bir ifadedir. Tüm ifadeniz "bu güvenli" ifadesini içeriyorsa, yazmayı bitirmeden önce güncelliğini yitirir ve bunun farkında olmamanız oldukça olasıdır. Son bölümde katılıyorum, hepsi detaylarla ilgili.
AviD

@AviD: Belki de benim belirli kelime seçimimi çok fazla okudun. Evet, daha fazla ayrıntı vermeden bir şeyin "güvenli" olduğunu söylemek anlamsızdır. Ama bunun aynı zamanda kişisel bir yargı olduğuna da ikna oldum , çünkü herkesin aynı güvenlik duygusu ve "güvenlik" için talepleri yoktur: A'nın yeterince güvenli bulduğu şey B'ye güvensiz gelebilir. Bu yüzden "güvenli" bir şeyin, ifadesini yapan kişi "güvenli bulur". Ve bu, birine ilgili gerçekleri vermek ve kendi sonuçlarını çıkarmalarına izin vermekle aynı ağırlıkta bir tartışma değildir.
stakx

Doğru, "ne ile ilgili" demek istediğim, güvenlik profili, riskler vs. "Güvenli" bir metrik sert bilim değil, bir yumuşak gördüğümüzde, onun cansız "duygu". Ama evet, dediğin gibi, bana "güvenli" olduğunu söyleme, bunu yapmak için ne yaptığını söyle.
AviD

@AviD: Tamam. Güvenliğin de isteksiz bir his olduğunu söylemek dışında, bu iddiayı daha da kötüleştirmeyeceğim . Elbette bundan daha fazlasıdır, ancak soru kullanıcıları "güvence altına almak" (soru başlığına bakın) ile ilgili olduğunda, en sonunda önemli olan duygudur.
stakx

1

Gerçekten web sitenizin bağlamına bağlıdır.

Örneğin, bu bir tüketici web sitesiyse, olasılıklar çoğunun sadece şifrelerini (belki), finansal / sağlık bilgilerini (bağlı olarak) ve resimler gibi özel bilgilerini (hahaha, evet doğru ...) umursamasıdır. .

Bu bir iş uygulamasıysa, yalnızca şifrelerle değil, sitenin tamamının güvenlik seviyesi de geçerlidir. Benzer şekilde, hedef kullanıcılarınızın kim olduğuna bağlıdır - son derece teknik / çok teknik değil vb.

Tüm bu bağlam, neyi iletmeniz gerektiğini ve hangi güvence düzeyinin gerekli olduğunu büyük ölçüde tanımlar .

Örneğin, teknik olmayan tüketiciler için aşağıdaki gibi genel, basit yorumların olması yeterlidir:

Bu site son teknoloji güvenlik teknikleri kullanılarak inşa edilmiştir. Parolanız her zaman şifrelenir ve resimlerinizi asla NSA'ya göndermeyiz.

(Ve diğerlerinin söylediği gibi, parolalara sahip olmamanız bile daha iyidir , OpenId veya OAuth gibi bir standart kullanın.)

Son derece teknik işletmeler için, aşağıdaki gibi teknik ve prosedür ayrıntılarının tam bir sayfasına sahip olmak istersiniz:

Geliştirme ve dağıtım sürecimiz boyunca tam bir SDL (güvenli geliştirme yaşam döngüsü) uyguladık.
...
Güvenlik mimarimiz ... Bu avantajlar ...
Güvenli kodlama sağlıyoruz ... ile ... Bunları ve testleri yapıyoruz.
Kriptografimiz bu algoritmaları içerir ... ve ... İhtiyacınız olan herhangi bir endüstri düzenlemesine uyuyoruz ve sertifikalı ...
Güvenliğimiz bu üçüncü taraf danışman tarafından doğrulanıyor.
...
Daha fazla bilgi almak ve politikalarımızı incelemek veya bağımsız bir denetim düzenlemek için lütfen pazarlama departmanı ile görüşün.

Tabii ki, çok fazla ayrıntılı bilgi vermek istemiyorsunuz , süreç hakkında şifrelerin kendisinden daha fazla olmalı ... Ve elbette, gerçekliğin orada ne yazdığınıza uyması gerektiğini söylemeden gitmeli , hangi bağlamla ilgileniyorsanız.

Belirtilen cevaplardan biri olarak, çoğu kullanıcı umursamıyor, ne söylediğinizi anlamıyor ve NSA'ya kullanıcı verileri gönderdiğinizi söyleseniz bile yine de kaydoluyor.
Bu onlar için değil.
Parolaları olmamak kadar mutlu olurlar, sadece listeden kullanıcı adımı seçmeme ve otomatik olarak giriş yapmama izin verin.

Açıkçası bu, bakımın küçük bir yüzdesi için - akıllı kullanıcıların doğru olanı yapmalarını, onlara ihtiyaç duydukları bilgileri vermelerini ve istedikleri eğitimi vermelerini sağlamalısınız.
Eğer yapmazsanız, bu yanlış gittiğinde, diğer% 98 aniden uyanacak ve sinirlenecektir.
("Elbette, resimlerimi görmek için bir parolaya ihtiyacım olmadığını biliyordum, ancak başkalarının da görebileceğini düşünmedim !!")


0

Sisteminizin güvenli olmasını istiyorsanız, şifre algoritmasının gücü anlamsızdır - bilgisayar korsanlarının çoğu, özellikle seçilen şifre küçükse veya bilgisayar korsanının zaten "kırdığı ve depolandığı genel kelimelerden oluşuyorsa, şifreleri hemen çözebilir "usiong gökkuşağı tabloları ve benzeri. ArsTechnica'nın şifre kırma hakkındaki makalesini okuyun .

Yapmanız gereken şey, kullanıcıların kötü adamların hashlerine ilk etapta ulaşamamalarını sağlamaktır. Çalıştığım güvenlik bilincine sahip bir şirket, web sunucularının fiziksel olarak veritabanı sunucularına bağlı olmadığı 3 katmanlı bir web sistemine sahipti. Patronum web sitesini koymak istediğinde ve DB'ye doğrudan erişmek istediğinde (kötü tasarlanmış kod, 'nuff dedi) ona sahip olamayacağı söylendi ve ittiğinde ... aralarında tel olmadığı söylendi . Tüm veri isteklerini orta kademe bir hizmetten geçirmesi için mimarisini tasarlamak zorunda kaldı. Ve bu hizmetler sadece güvenli olmakla kalmadı, aynı zamanda saldırmak için minimum yüzeye maruz kaldı ve kilitlendi. Ve DB hiçbir zaman tablolarını okumak için açığa vurmadı, sadece ilgili servislerin erişebilmesi için kilitlenen saklı yordamlar.

Düşündüğünüz gibi kodlamak o kadar da kötü değildi, mimariyi ve her katmanın ayrılmasını öğrendikten sonra, kodlamak oldukça kolaydı.


0

Gezegendeki en güvenli siteyi geliştirebilir ve gerçekten kötü bir kullanıcı deneyimine sahip olabilirsiniz. Kullanıcılar sitenizin güvenli olmadığını varsayar.

Gezegendeki en az güvenli siteyi oluşturabilir ve inanılmaz kullanıcı deneyimine sahip olabilirsiniz. Kullanıcılar sitenizin güvenli olduğunu varsayar. En azından akşam haberlerinde görünene kadar.

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.