Nasıl etik sonra şifresiz erişim için kullanıcı şifresi depolama yaklaşım gerekir?

24 Cevap php

Ben web siteleri ve web uygulamaları daha inşa etmeye devam ettikçe ben genellikle kullanıcı (onları yürümek, unutulmuş bir şifre linki e-posta ya bir sorun varsa / zaman alınabilir bir şekilde kullanıcıların şifrelerini saklamak için soruluyor telefon, vb) Ben bu uygulamaya karşı sert bir mücadele ve ben onların gerçek şifre kaydetmeden şifre sıfırlar ve idari yardım mümkün kılmak için 'ekstra' programlama bir sürü yaptığınızda.

Ben en azından veritabanı içinde olsa da düz metin olarak depolanır, böylece o zaman ben her zaman bir şekilde şifreyi kodlamak mücadele edemem (veya kazanmak değil) ne zaman ben farkında değilim, benim DB kesmek alırsa o Beni rahatsız eden de-böylece şifreleri kırmak için suçlu için çok almayacağız.

Mükemmel bir dünya millet sık şifreleri güncellemek istiyorum ve aynı ev / iş / e-posta / banka şifre var çok farklı siteleri-ne yazık ki ben biliyorum birçok kişi karşısında bunları çoğaltmak, ve onlar yardıma ihtiyacınız olduğunda bile serbestçe bana verilmiş değil. Benim DB güvenlik prosedürleri nedense başarısız olursa mali ölümü sorumlu biri olmak istemiyorum.

Morally and ethically I feel responsible for protecting what can be, for some users, their livelihood even if they are treating it with much less respect. I am certain that there are many avenues to approach and arguments to be made for salting hashes and different encoding options, but is there a single ‘best practice’ when you have to store them? In almost all cases I am using PHP and MySQL if that makes any difference in the way I should handle the specifics.

Additional Information for Bounty

Ben bu yapmanız gereken istediğiniz bir şey değildir ve bunu yapmak için çoğu durumda reddetmesi isimli iyi biliyorum ki açıklığa kavuşturmak istiyorum. Ben, ancak, bu yaklaşım yaparsam ben almak için iyi adımlar için arıyorum bu yaklaşımı alarak esası hakkında bir ders için arıyorum değil.

Aşağıda bir not ben siteleri zihinsel engelliler, yaşlılar doğru ölçüde dişli, ya da güvenli bir şifre kurtarma yordamını gerçekleştirmek için istendiğinde çok genç insanlar için kafa karıştırıcı olabilir noktası yaptı. Biz bu durumda bu basit ve sıradan bulmak olsa bazı kullanıcılar sisteme bir hizmet teknik yardım onlara olan veya onlara doğrudan görüntülenen / e-postayla sahip ya ekstra yardıma ihtiyacımız var.

Kullanıcıların erişim yardımı bu düzeyde verilmiş olmasaydı böyle sistemlerde bu demografik kayıp oranı uygulanmasını aksatıyor olabilir, bu nedenle aklında böyle bir kurulum ile cevap lütfen.

Thanks to Everyone

Bu tartışma çok eğlenceli bir soru olmuştur ve ben keyif aldık. Sonunda ben (düz metin veya kazanılabilir şifreleri tutmak zorunda kalmazsınız) hem de şifre güvenliğini koruyan bir cevap seçilmiş, aynı zamanda mümkün ben büyük sakıncaları olmayan bir sistemde oturum belirtilen kullanıcı tabanı Ben gelen bulduk yapar Normal şifre kurtarma.

Her zaman olduğu gibi ben orada farklı nedenlerle doğru işaretlenmiş istiyorum yaklaşık 5 cevaplar vardı ama ben en iyi bir seçim vardı - tüm kalan bir 1 aldım. Herkese teşekkürler!

Ayrıca, bu soru için oy ve / veya favori olarak işaretlenmiş Stack toplumda herkese teşekkürler. Bunu bir iltifat olarak oy 100 kadar isabet almak ve bu tartışma vardı aynı endişe ile başkasına yardımcı oldu umuyoruz.

24 Cevap

Nasıl bu sorunu başka bir yaklaşım veya açısını almaya ne dersiniz? Parola düz metin olması gereklidir neden sorun: kullanıcı sen gerçekten, onlar set şifre (onlar zaten ne olduğunu hatırlamıyorum) almak gerekmez kesinlikle konuşma sonra, şifre alabilirsiniz böylece eğer onlara bir şifre vermek gerekiyor onlar can use.

Bir düşünün: kullanıcı şifre almak gerekiyorsa bunu unutmuş, çünkü bu. Bu durumda yeni şifre eski biri kadar iyidir. Ama bugün kullanılan ortak parola sıfırlama mekanizmalarının dezavantajlarından biri bir sıfırlama işlemi üretilen oluşturulan şifreler genellikle rastgele bir karakter demet, bu yüzden onlar kopya-n-sürece sadece doğru yazmanız kullanıcı için zor bir konum olduğunu yapıştırın. Bu daha az meraklısı bilgisayar kullanıcıları için bir sorun olabilir.

Bu soruna bir yolu daha fazla ya da daha az doğal dil yazı otomatik oluşturulan şifreleri sağlamaktır. Doğal dil dizeleri aynı uzunlukta rasgele bir karakter dizesi, sizin otomatik oluşturulan şifre sadece 8 (veya 10 ya da 12) karakter olması gerekir diyor bir şey yok ki entropi olmayabilir iken. Birlikte birkaç rasgele kelime (aralarında bir boşluk bırakın, bu yüzden hala tanınabilir konum ve okuyabilir herkes tarafından tiplendirilemeyen) çekimi ile bir yüksek-entropi otomatik oluşturulan şifresini alın. Değişen uzunlukta altı rastgele sözler muhtemelen doğru ve 10 rasgele karakterden daha güvenle yazmak için daha kolay ve onlar da daha yüksek bir entropiye sahip olabilir. Örneğin, 10 karakter şifre entropi (72 geçerli sembollerin toplam) 61,7 bit bir entropi olurdu büyük harf, küçük harf, rakam ve 10 noktalama işaretleri rastgele çizilmiş. Rastgele altı kelime dizesi için seçilmiş olabilir 7776 kelime (Diceware kullanır gibi) bir sözlük kullanarak, parolası 77.4 bitlerin bir entropi olurdu. Diceware FAQ daha fazla bilgi için bkz.

  • entropi yaklaşık 77 bit ile bir parolası: "nesir flare tablo akut yetenek itiraf"

  • "K: & $ R ^ tt ~ qkD" entropi yaklaşık 74 bit ile bir şifre

Ben kelime yazarak tercih ediyorum biliyorum, ve kopya-n-hamurlu, ifade bu şifre ya yüzden hiçbir kaybı orada kullanmak için daha az kolaydır. Web sitesi (veya ne olursa olsun korumalı varlıktır) otomatik oluşturulan dizesi için entropi 77 bit gerekir yoksa tabii ki, (Ben senin kullanıcıları seviniriz emin değilim) Daha az kelime üretir.

Gerçekten değeri yüksek düzeyde yok parola korumalı varlıklar olduğunu argümanları anlamak, bu yüzden bir şifre ihlali dünyanın sonu olmayabilir. Ben çeşitli web sitelerinde kullanmak şifreleri% 80 ihlal Örneğin eğer, muhtemelen umurumda olmaz: Olabilecek tüm spam ya da bir süre için benim adı altında ilanıyla bir kişidir. Bu harika olmaz, ama onlar benim banka hesabınıza girmesini olurdu gibi değil. Ancak, onların banka hesapları (ve muhtemelen ulusal güvenlik veritabanları) için yapılacak pek çok kişi kendi web forum siteleri için aynı şifreyi kullanmak gerçeği göz önüne alındığında, ben olmayan hatta bu 'düşük değer' şifreleri işlemek için iyi olacağını düşünüyorum -kazanılabilir.

Bar, diyelim - - Birisi inşa edilecek büyük bir bina görevlendirdi düşünün ve şu konuşma gerçekleşir:

Architect: For a building of this size and capacity, you will need fire exits here, here, and here.
Client: No, that's too complicated and expensive to maintain, I don't want any side doors or back doors.
Architect: Sir, fire exits are not optional, they are required as per the city's fire code.
Client: I'm not paying you to argue. Just do what I asked.

Mimar sonra etik yangın çıkar olmadan bu binayı inşa etmek için nasıl sorabilir mi?

Inşaat ve mühendislik sektöründe, konuşma böyle bitirmek en yüksektir:

Architect: This building cannot be built without fire exits. You can go to any other licensed professional and he will tell you the same thing. I'm leaving now; call me back when you are ready to cooperate.

Bilgisayar programlama licensed meslek olmayabilir, ama insanlar genellikle bizim meslek, bir sivil ya da makine mühendisi olarak aynı saygıyı almaz merak görünüyor - iyi, daha fazla kendinizi yormayın. Bu meslekler, çöp (ya da düpedüz tehlikeli) gereksinimlerini teslim olduğunda, sadece reddeder. Onlar, demek için bir bahane değil biliyorum "iyi, ben elimden geleni yaptım, ama o ısrar etti, ve ben lazım diyor ne ettik." Onlar bahane için kendi lisans kaybedebilir.

Senin ya da müşterilerine herhangi bir halka açık şirketin parçası olup olmadığını bilmiyoruz, ancak herhangi bir geri kazanılabilir biçimde şifreleri saklayarak güvenlik denetimlerinin birkaç farklı türde başarısız olmasına neden olur. Sorun bu şifreleri kurtarmak için veritabanı erişimi var bazı "Hacker" için ne kadar zor olacağını değil. The vast majority of security threats are internal. Ne karşı korumak için gereken bazı hoşnutsuz çalışan tüm şifreleri ile kapalı yürüyüş ve en yüksek fiyatı verene satan. Asimetrik şifreleme kullanarak ve ayrı bir veritabanında özel anahtarı depolamak bu senaryoyu engellemek için kesinlikle hiçbir şey yapmaz; her zaman orada özel veritabanına erişimi olan someone olacak ve ciddi bir güvenlik riski var.

There is no ethical or responsible way to store passwords in a recoverable form. Period.

Sen bir genel anahtar ile şifre + bir tuz şifreleyebilirsiniz. Depolanan değeri kullanıcı girişi + tuz hesaplanan değere eşitse giriş sadece kontrol için. Parola düz metin olarak restore edilmesi gerekmektedir bir zaman, orada gelirse, size özel anahtar ile manuel veya yarı otomatik olarak çözebilir. Özel anahtar başka yerde muhafaza edilebilir ve ayrıca (daha sonra şifresi insan etkileşimi ihtiyacınız olacak olan) simetrik şifreli olabilir.

Bu aslında Windows Recovery Agent çalışır şekilde tür benzer olduğunu düşünüyorum.

  • Şifreler şifreli saklanır
  • İnsanlar düz metin için şifresini olmadan giriş yapabilirsiniz
  • Parolalar düz metin için telafi edilebilir, ancak sadece özel bir anahtar ile, o (güvenli bir bankada, isterseniz) sistemi dışında saklanabilir.

Pes etmeyin. Eğer müşterileri ikna etmek için kullanabileceğiniz silah olmayan repudiability değildir. Eğer herhangi bir mekanizma aracılığıyla kullanıcı parolalarını yeniden Eğer tedarikçi kanıtlamak hiçbir yolu yoktur, çünkü sen their müşterilerine yasal olmayan boşama mekanizması verdik ve onlar bu şifre bağlı herhangi bir işlem inkar edebilirim ki onlar parolayı yeniden ve kendileri aracılığıyla işlem koymadı. Şifreleri doğru değil şifreli daha hazmettiriciler kayıtlı ise, bu imkansız, ergo son istemci işlem kendisi idam veya bakım WRT görevini ihlal belirtilebilir parola. Onunla dürüstçe sorumluluk bırakır her iki durumda da. Ben o milyonlarca dolar, yüzlerce anlamına geleceğini durumlarda çalıştık. Değil yanlış almak istediğiniz bir şey.

Daha sonra şifresiz alma için etik deposu şifreleri yapamam. Bu kadar basit. Hatta Jon Skeet sonra şifresiz alma için etik deposu şifreleri yapamam. Kullanıcıların bir şekilde ya da diğer düz metin parolaları alabilir, o zaman potansiyel yüzden de sizin kodunda bulunan bir güvenlik açığını bulan bir hacker. Ve bu varlık uzlaşma sadece bir kullanıcının parolası değil, ama all of them.

Müşterileriniz bununla bir sorunu varsa, recoverably şifreleri depolamak hukuka aykırı olduğunu söyle. Burada herhangi bir oranda İngiltere'de, Veri Koruma Yasası 1998 (özellikle, Program 1, Kısım II, Paragraf 9), diğer şeyler arasında, dikkate alarak, güvenli kişisel verileri tutmak için uygun teknik önlemleri kullanmak veri kontrolörleri gerektirir siteler arasında paylaşmak şifreleri kullanıcılar için önemli olabilir - veri tehlikeye olsaydı neden olabilir zarar. Onlar hala sorun bu gibi bazı gerçek dünya örnekleri, bunları gelin, bir sorun olduğu gerçeğini grokking varsa this one.

Kullanıcıların bir giriş kurtarmak için izin basit yolu onları otomatik olarak bunları kaydeder ve yeni bir parola seçebilirsiniz bir sayfa düz götüren bir kerelik linki e-posta etmektir. Bir prototip oluşturma ve onlara eylem göstermek.

Burada konuyla ilgili yazdığı blog yazılarını bir çift vardır:

Update: şimdi dava ve düzgün kullanıcıların şifreleri güvenli başarısız şirketlere karşı kovuşturmaları görmeye başlıyor. Örnek: LinkedIn slapped with $5 million class action lawsuit; Sony fined £250,000 over PlayStation data hack. Eğer doğru hatırlıyorsam, LinkedIn aslında onun kullanıcıların şifreleri şifreleyerek, ama o kullanan şifreleme etkili olması için çok zayıf oldu.

Kullandığınız yöntem ne olursa olsun, sen (yönetici) hala şifre kurtarmak gerçeğidir - Michael Brooks CWE-257 hakkında oldukça vokal olmuştur. Peki bu seçenekler hakkında:

  1. Bazı dış otorite - someone else's genel anahtarı ile şifreleyebilirsiniz. Eğer kişisel olarak yeniden olamaz bu şekilde, ve kullanıcının bu dış otoriteye gidip onların şifre iyileşti var sormak gerekir.
  2. Ikinci bir parola kelimesinden üretilen bir anahtarı kullanarak şifreleyebilirsiniz. Bu şifreleme istemci tarafı yapmak ve sunucuya açık bunu asla göndermez. Ardından, kurtarmak için kendi girişinden anahtarını yeniden üreterek yeniden şifre çözme istemci tarafı yok. Kuşkusuz, bu yaklaşım temelde ikinci bir şifre kullanıyor, ama her zaman bunu yazmalarını söyleyin, ya da eski güvenlik soru yaklaşım kullanabilirsiniz.

Size özel tuşunu basılı tutun müşterinin şirket içinde birini tayin sağlar çünkü 1. Daha iyi bir seçim olduğunu düşünüyorum. Onlar tuşunu kendileri oluşturmak emin olun, ve onlar tahmin etmek parola çatlamak olurdu böylece bile sadece şifrelemek seçilmesi ile güvenlik eklemek ve iç üçüncü şahıslara şifrenizi belirli karakterleri kaynağı olabilecek bir kasa vb talimatlar ile saklayabilirsiniz o. Kullanıcıya bu karakterleri temini, muhtemelen ne olduğunu hatırlar!

Bu bölümü okuduktan sonra:

In a note below I made the point that websites geared largely toward the elderly, mentally challenged, or very young can become confusing for people when they are asked to perform a secure password recovery routine. Though we may find it simple and mundane in those cases some users need the extra assistance of either having a service tech help them into the system or having it emailed/displayed directly to them.

In such systems the attrition rate from these demographics could hobble the application if users were not given this level of access assistance, so please answer with such a setup in mind.

I'm left wondering if any of these requirements mandate a retrievable password system. For instance: Aunt Mabel calls up and says "Your internet program isn't working, I don't know my password". "OK" says the customer service drone "let me check a few details and then I'll give you a new password. When you next log in it will ask you if you want to keep that password or change it to something you can remember more easily."

Sonra sistem bir parola sıfırlama ne zaman biliyor ve bir "sen yeni bir şifre tutmak veya yeni bir seçim istiyoruz" mesajı görüntülemek için kuruldu.

Nasıl bunun için kötüdür az PC-okuryazar eski şifreyi söylendi daha? Müşteri hizmeti kişi yaramazlık kadar alabilirsiniz ederken, veritabanının kendisi çok daha güvenli durumda bir ihlal olduğunu.

Benim önerim kötü ne yap ve ben aslında başlangıçta istediğini yapar ne bir çözüm önerelim.

Bu soruya yanıt olarak kullanıcı için güvenlik endişeleri bir sürü tartışma oldu, ama faydaları bir bahsederek eklemek istiyorum. Şimdiye kadar, ben one legitimate benefit sisteminde depolanan bir kurtarılabilir parola olması için söz görmedim. Bu düşünün:

  • Şifrelerini sahip olmaktan kullanıcı fayda onlara e-postayla mı? No Onlar umarım onlara will hatırlayabileceğiniz bir şifre seçmek için izin verecek bir tek kullanımlık parola sıfırlama bağlantısı, daha fazla parası.
  • Şifrelerini sahip olmaktan kullanıcı fayda ekranda mı? Resim, yukarıdaki gibi aynı nedenle; Onlar yeni bir şifre seçmelisiniz.
  • Bir destek personeline sahip olmaktan kullanıcı yarar kullanıcıya şifresini konuşuyor mu? No; destek sorumlusu olarak düzgün doğrulanmış onların parolası kullanıcının isteği görürse tekrar, yeni bir şifre ve bunu değiştirmek için fırsat verilecek kullanıcının yararına daha fazla bulunuyor. Ayrıca, telefon desteği otomatik şifre sıfırlar daha pahalı, bu yüzden şirket de fayda etmez.

Bu geri kazanılabilir şifreleri yararlanabilir sadece onlar (hiç API'lerini dedi kullanmayın lütfen!) Kötü niyet veya üçüncü taraf şifre alışverişini gerektiren kötü API'leri destekçileri ile olanlardır görünüyor. Belki dürüst o the company gains no benefits and only liabilities by storing recoverable passwords müşterilerinize belirterek argüman kazanabilirsiniz.

Istekleri bu tür satır aralarını okuma, sizin müşterileriniz muhtemelen anlamıyorum ya aslında hatta şifreleri nasıl yönetildiği hakkında umurumda olduğunu görürsünüz. Ne onlar gerçekten istediğiniz bir authentication system onların kullanıcıları için çok zor değil mi. Yani aslında geri kazanılabilir şifreleri istemiyorum bunları nasıl söylüyorum ek olarak, size bir banka, diyelim ki, ağır güvenlik seviyelerini gerekmez, özellikle eğer onlara kimlik doğrulama işlemi daha az ağrılı hale getirmenin yollarını sunmalıdır:

  • Kullanıcı kendi kullanıcı adı için e-posta adresi kullanmak için izin verir. Ben kullanıcı kendi kullanıcı adını unutan sayısız vaka gördüm, ancak birkaç e-posta adresi unutmayın.
  • Teklif OpenID ve bir üçüncü taraf kullanıcı unutkanlık masrafları için ödeme sağlar.
  • Parola kısıtlamalar inmek. Ben bazı web sitesi için "özel karakterler kullanamazsınız" ya şifrenizi başlamalıdır "veya" şifre çok uzun "gibi gereksiz gereksinimleri tercih şifrenizi izin vermez zaman hepimiz inanılmaz derecede rahatsız oldum eminim bir harf ile. " Kullanım kolaylığı şifre gücü daha büyük bir endişe varsa, Ayrıca, kısa parolaları sağlayan veya karakter sınıfları bir karışımı gerektirmeyen tarafından bile olmayan aptal gereksinimlerini gevşetin olabilir. Gevşetti kısıtlamalar ile, kullanıcılar unutmayacağım bir şifre kullanmak için daha çok olacaktır.
  • Şifreleri sona etmeyin.
  • Kullanıcı eski parola yeniden izin.
  • Kullanıcı kendi şifre sıfırlama soruyu seçmelerine izin verin.

Eğer, herhangi bir nedenle (ve bize nedenini söyleyin lütfen) için really, really, really bir parola geri kazanılabilir olması gerekiyor Ama eğer onlara vererek olmayan bir tarafından potansiyel onların diğer çevrimiçi hesaplarınızı tehlikeye kullanıcıyı kalkan olabilir parola tabanlı kimlik doğrulama sistemi. Kişi zaten kullanıcı adı / şifre sistemlerine aşina ve iyi icra çözüm olduğundan, bu son çare olurdu, ama şifreleri yaratıcı alternatifler bol elbette var:

  • Kullanıcının sayısal pin, tercihen 4-haneli ve tercihen kaba kuvvet girişimleri karşı korumalıdır yalnızca seçelim.
  • Kullanıcı sadece onlar asla değişmeyeceğini, her zaman hatırlayacağım cevabını bilmek kısa bir cevap ile bir soru seçin, ve onlar bulmak diğer insanları umursamıyorum var.
  • Kullanıcı (G1 telefon kilidini için bu nasıl yaptığını this nifty photo Görmek) bir kullanıcı adı girin ve ardından tahmin karşı korumak için yeterli permütasyon ile kolay hatırlamak şekil çizmek var.
  • Bir çocuk web sitesi için, (tür bir identicon gibi) kullanıcı adına göre bir bulanık yaratık otomatik oluşturmak ve yaratığa gizli bir ad vermek için kullanıcıya sorabilirsiniz. Onlar sonra oturum yaratığın sırrı adını girmeniz istenir olabilir

Nasıl bir bakımevine hakkında?

Güçlü bir şifreleme ile şifreleri saklamak ve sıfırlar olanak yoktur.

Yerine şifreleri sıfırlama, bir kerelik şifre (en kısa sürede ilk oturum açma oluştuğu olarak değiştirilmelidir) gönderilmesine izin. Kullanıcı daha sonra da (önceki birini, isterlerse) istersen şifresini değiştirelim.

Sen şifreleri sıfırlamak için güvenli bir mekanizma olarak, bu "satmaya" olabilir.

Pursuant to the comment I made on the question:
One important point has been very glossed over by nearly everyone... My initial reaction was very similar to @Michael Brooks, till I realized, like @stefanw, that the issue here is broken requirements, but these are what they are.
But then, it occured to me that that might not even be the case! The missing point here, is the unspoken value of the application's assets. Simply speaking, for a low value system, a fully secure authentication mechanism, with all the process involved, would be overkill, and the wrong security choice.
Obviously, for a bank, the "best practices" are a must, and there is no way to ethically violate CWE-257. But it's easy to think of low value systems where it's just not worth it (but a simple password is still required).

It's important to remember, true security expertise is in finding appropriate tradeoffs, NOT in dogmatically spouting the "Best Practices" that anyone can read online.

As such, I suggest another solution:
Depending on the value of the system, and ONLY IF the system is appropriately low-value with no "expensive" asset (the identity itself, included), AND there are valid business requirements that make proper process impossible (or sufficiently difficult/expensive), AND the client is made aware of all the caveats...
Then it could be appropriate to simply allow reversible encryption, with no special hoops to jump through.
I am stopping just short of saying not to bother with encryption at all, because it is very simple/cheap to implement (even considering passible key management), and it DOES provide SOME protection (more than the cost of implementing it). Also, its worth looking at how to provide the user with the original password, whether via email, displaying on the screen, etc.
Since the assumption here is that the value of the stolen password (even in aggregate) is quite low, any of these solutions can be valid.


Devam canlı bir tartışma, farklı mesajların ve ayrı yorum ipliği aslında BİRKAÇ canlı tartışmalar, olduğundan, ben bazı açıklamalar eklemek ve başka bir yerde burada gündeme gelmiş, çok iyi bazı noktaları cevap verecektir.

To start, I think it's clear to everyone here that allowing the user's original password to be retrieved, is Bad Practice, and generally Not A Good Idea. That is not at all under dispute...
Further, I will emphasize that in many, nay MOST, situations - it's really wrong, even foul, nasty, AND ugly.

Ancak, sorunun dönüm noktası etrafında the principle, IS there any situation where it might not be necessary Bu korusun, ve eğer öyleyse, most correct manner appropriate to the situation bunu nasıl.

Now, as @Thomas, @sfussenegger and few others mentioned, the only proper way to answer that question, is to do a thorough risk analysis of any given (or hypothetical) situation, to understand what's at stake, how much it's worth to protect, and what other mitigations are in play to afford that protection.
No, it is NOT a buzzword, this is one of the basic, most important tools for a real-live security professional. Best practices are good up to a point (usually as guidelines for the inexperienced and the hacks), after that point thoughtful risk analysis takes over.

Y'know, it's funny - I always considered myself one of the security fanatics, and somehow I'm on the opposite side of those so-called "Security Experts"... Well, truth is - because I'm a fanatic, and an actual real-life security expert - I do not believe in spouting "Best Practice" dogma (or CWEs) WITHOUT that all-important risk analysis.
"Beware the security zealot who is quick to apply everything in their tool belt without knowing what the actual issue is they are defending against. More security doesn’t necessarily equate to good security."
Risk analysis, and true security fanatics, would point to a smarter, value/risk -based tradeoff, based on risk, potential loss, possible threats, complementary mitigations, etc. Any "Security Expert" that cannot point to sound risk analysis as the basis for their recommendations, or support logical tradeoffs, but would instead prefer to spout dogma and CWEs without even understanding how to perform a risk analysis, are naught but Security Hacks, and their Expertise is not worth the toilet paper they printed it on.

Nitekim, biz Havalimanı Güvenlik olduğu anlamsızlığını edinmektir.

But before we talk about the appropriate tradeoffs to make in THIS SITUATION, let's take a look at the apparent risks (apparent, because we don't have all the background information on this situation, we are all hypothesizing - since the question is what hypothetical situation might there be...)
Let's assume a LOW-VALUE system, yet not so trival that it's public access - the system owner wants to prevent casual impersonation, yet "high" security is not as paramount as ease of use. (Yes, it is a legitimate tradeoff to ACCEPT the risk that any proficient script-kiddie can hack the site... Wait, isn't APT in vogue now...?)
Just for example, let's say I'm arranging a simple site for a large family gathering, allowing everyone to brainstorm on where we want to go on our camping trip this year. I'm less worried about some anonymous hacker, or even Cousin Fred squeezing in repeated suggestions to go back to Lake Wantanamanabikiliki, as I am about Aunt Erma not being able to logon when she needs to. Now, Aunt Erma, being a nuclear physicist, isn't very good at remembering passwords, or even with using computers at all... So I want to remove all friction possible for her. Again, I'm NOT worried about hacks, I just dont want silly mistakes of wrong login - I want to know who is coming, and what they want.

Anyway.
So what are our main risks here, if we symmetrically encrypt passwords, instead of using a one-way hash?

  • Kullanıcıların kimliğine bürünerek? Hayır, ben zaten ilginç değil, bu riski kabul ettik.
  • Evil yönetici? Birisi başka bir kullanıcı, iç ya da hayır ... ve zaten kötü niyetli bir yönetici taklit eğer Eh, belki ... Ama yine ben dikkat dont olacak şifrenizi almak no matter what - yönetici kötü gitti ise, onun zaten oyun bitti.
  • Another issue that's been raised, is the identity is actually shared between several systems. Ah! This is a very interesting risk, that requires a closer look.
    Let me start by asserting that it's not the actual identity thats shared, rather the proof, or the authentication credential. Okay, since a shared password will effectively allow me entrance to another system (say, my bank account, or gmail), this is effectively the same identity, so it's just semantics... Except that it's not. Identity is managed seperately by each system, in this scenario (though there might be third party id systems, such as OAuth - still, its seperate from the identity in this system - more on this later).
    As such, the core point of risk here, is that the user will willingly input his (same) password into several different systems - and now, I (the admin) or any other hacker of my site will have access to Aunt Erma's passwords for the nuclear missile site.

Hmmm.

Burada bir şey sizin için kapalı görünüyor mu?

Bunu yapması gerekir.

Let's start with the fact that protecting the nuclear missiles system is not my responsibility, I'm just building a frakkin family outing site (for MY family). So whose responsibility IS it? Umm... How about the nuclear missiles system? Duh.
Second, If I wanted to steal someone's password (someone who is known to repeatedly use the same password between secure sites, and not-so-secure ones) - why would I bother hacking your site? Or struggling with your symmetric encryption? Goshdarnitall, I can just put up my own simple website, have users sign up to receive VERY IMPORTANT NEWS about whatever they want... Puffo Presto, I "stole" their passwords.

Yes, user education always does come back to bite us in the hienie, doesn't it?
And there's nothing you can do about that... Even if you WERE to hash their passwords on your site, and do everything else the TSA can think of, you added protection to their password NOT ONE WHIT, if they're going to keep promiscuously sticking their passwords into every site they bump into. Don't EVEN bother trying.

You don't own their passwords Bir başka ifadeyle, bu yüzden sizin gibi davranmaya çalışıyor durdurmak.

Yani, benim Sevgili Güvenlik Uzmanları, Wendy sormak için kullanılan eski bir bayan olarak "NEREDE risk?"

Yukarıda dile getirilen bazı konulara cevap başka birkaç nokta:

  • CWE bile değil, bir yasa ya da yönetmelik veya bir standarttır. Bu "En İyi Uygulamalar" tersi, yani common weaknesses topluluğudur.
  • Paylaşılan kimlik sorunu gerçek bir sorun, ama burada Muhaliflere tarafından yanlış anlaşılan (ya da yanlış) olduğunu. Bu kendi kimliğini paylaşan bir konudur (!) DEĞİL, düşük değer sistemleri üzerinde şifreleri çatlama hakkında. Eğer düşük bir değer ve yüksek değer sistemi arasında bir şifre paylaşımı ediyorsanız, sorun orada zaten!
  • Tarafından tarafından, önceki nokta aslında AGAINST OAuth ve hem de bu düşük değer sistemleri için gibi ve yüksek değerli bankacılık sistemlerini kullanarak işaret eder.
  • Ben sadece bir örnek olduğunu biliyorum, ama (ne yazık ki) FBI sistemleri gerçekten en etrafında güvenli değildir. Oldukça kedinizin blogunuzun sunucular gibi, ama ne de daha güvenli bazı bankalar aşmak yok.
  • Şifreleme anahtarlarının bölünmüş bilgisi, ya da çift kontrol, aslında PCI-DSS şimdi requires Bu temelde tüm tüccarlar, bu yüzden onun gerçekten şimdiye kadar orada artık (sadece askeri ne yoksa değer ) onu haklı.
  • Bu gibi sorular geliştirici meslek bu kadar kötü görünüyorsun kılan olduklarından şikayet etmektedirler herkese: Bu güvenlik mesleği daha da kötü görünmesi olanlar gibi cevaplar. Yine, iş odaklı risk analizi aksi takdirde kendinizi işe yaramaz hale, gerekli olan budur. Yanlış olmasının yanı sıra.
  • Ben sadece normal bir geliştirici almak ve farklı düşünmek eğitim olmadan, ona daha fazla güvenlik sorumlulukları bırakın ve doğru tradeoffs bakmak için iyi bir fikir değil bu yüzden sanırım. Hiçbir suç, burada o sizin için, ben bunun için tüm kulüpler - ama daha fazla eğitim için olduğunu.

Whew. What a long post...
But to answer your original question, @Shane:

  • Müşteriye şeyler yapmak için doğru yolu açıklar.
  • Hâlâ ısrar ederse, iddia, ısrar, biraz daha açıklar. Gerekirse, bir sinir atmak.
  • Ona İŞ RİSKİ açıklayın. Detaylar rakamlar iyi, iyi, canlı bir demo iyi genellikle.
  • IF HE STILL insists, AND presents valid business reasons - it's time for you to do a judgement call:
    Is this site low-to-no-value? Is it really a valid business case? Is it good enough for you? Are there no other risks you can consider, that would outweigh valid business reasons? (And of course, is the client NOT a malicious site, but thats duh).
    If so, just go right ahead. It's not worth the effort, friction, and lost usage (in this hypothetical situation) to put the necessary process in place. Any other decision (again, in this situation) is a bad tradeoff.

Yani, alt çizgi ve gerçek bir cevap - basit bir simetrik algoritma ile şifrelemek şifreleme güçlü ACL ile anahtar ve tercihen DPAPI veya benzeri korumak, bunu belgelemek ve istemci (bu karar için yeterli kıdemli birisi) kapalı oturum var o.

Ben kendinize sormanız gereken asıl soru olduğunu düşünüyorum: 'Nasıl inandırıcı insanların daha iyi olabilir'

Kullanıcının güvenlik sorusuna şifreleme anahtarının bir parçası cevabını yapmak ve (bunun yerine hash) düz metin olarak güvenlik soru cevap tutmayın

Güvenli / güvenli değil: kimlik Güvenliğini bir ikili işlem değildir. Güvenlik Tüm risk değerlendirmesi ile ilgili olduğunu ve bir süreklilik üzerinde ölçülür. Güvenlik fanatikleri bu şekilde düşünmek istemem ama çirkin gerçeği hiçbir şey mükemmel güvenli olmasıdır. Sıkı şifre gereksinimleri, DNA örnekleri ve retina taramaları ile karma şifreleri daha güvenli ancak gelişme ve kullanıcı deneyimi bir maliyet vardır. Metin parolalar çok daha az güvenli ama uygulamak için (ancak kaçınılmalıdır) ucuzdur. Günün sonunda, aşağı ihlali bir maliyet / fayda analizi geliyor. Sen güvenli olan veri değeri ve zaman değerine tabanlı güvenliği uygulamak.

Birinin parolası vahşi içine almanın maliyeti nedir? Verilen sistemde taklit maliyeti nedir? FBI bilgisayarlar için maliyeti çok büyük olabilir. Bob'un tek-off beş sayfalık bir web sitesi, maliyet önemsiz olabilir. Bir profesyonel müşterilerine seçenekler sunar ve güvenlik söz konusu olduğunda, avantajları ve herhangi bir uygulama risklerini ortaya koymaktadır. İstemci çünkü endüstri standartlarını kulak başarısız riski onları koymak olabilir bir şey istediğinde eğer bu iki kat böyledir. Bir istemci özellikle iki yönlü şifreleme isterse, ben size itirazlarını belge sağlamak olurdu ama bu bildiğiniz iyi şekilde uygulanması sizi durmamalı. Günün sonunda, müşterinin para. Evet, kesinlikle tek seçenek ve başka bir şey etik olduğunu söylemek için ancak tek yönlü sağlamalarının kullanarak zorlamalıyız safsatadan ibaret.

Eğer iki yönlü şifreleme ile şifreleri depolamak ise, güvenlik tüm aşağı kilit yönetimi söz konusu. , Windows sertifikaları idari hesaplarına özel anahtarları ve şifreleri ile erişimi kısıtlamak için mekanizmalar sağlar. Diğer platformun üzerinde barındıran iseniz, bu mevcut olan seçeneklerin ne olduğunu görmek gerekir. Başkalarına tavsiye ettiler, sen asimetrik şifreleme kullanabilirsiniz.

Kanun yok (ne İngiltere'de Veri Koruma Yasası) Ben farkında değilim ki bu devletlerin özellikle şifreler tek yönlü sağlamalarının kullanılarak saklanması gerektiğini. Bu yasaların herhangi tek şartı reasonable adımlar güvenlik için alınır basitçe. Veritabanına erişimi kısıtlı ise, hatta düz metin şifreleri böyle bir kısıtlama altında yasal olarak geçerli olabilir.

Ancak, bu bir kez daha yönünü gün ışığına getiriyor: yasal öncelik. Yasal öncelik Eğer sistem inşa ediliyor hangi sanayi verilen tek yönlü sağlamalarının kullanmanız gerektiğini tavsiye ediyorsa, o tamamen farklı. Bu sizin müşteri ikna için kullandığınız mühimmat olduğunu. Makul bir risk değerlendirmesini sağlamak için en iyi öneri, itirazlarınızı belgelemek ve müşteri gereksinimlerini verilmesi gibi en güvenli şekilde sistemi uygulamak, bu engelleme.

Ben aynı sorunu var. Ve aynı yolda ben hep "eğer" değil "ne zaman" meselesi değil Birisi benim sistem kesmek olduğunu düşünüyorum.

Ancak, contrary insanlar burada ne söylediğini, evet, hassas kazanılabilir bilgi depolamak ve hala güvenli ve etik kalması için birçok teknik yolu vardır. Bitcoin (sanal para), örneğin, her kullanıcı bir açık kamusal p2p tablo var para miktarını depolar. Bu temelde yine 2 güncellemek herkese açık, herkesin görebileceği alanlara (User_id ve amount_money), ve, onun güvenli bir tablo.

If teknik bir şekilde ben mağaza kazanılabilir hassas bilgileri etik ve / veya güvenlik sorunlarına yol açabilir katılıyorum, ancak, eğer kullanılıyorsa, bu etik soruları ortadan yapmak için teknik yolu vardır, orada değildi.

Teknik olarak hemen hemen tüm çözümleri simetrik / asimetrik anahtarları kullanır. Ve bu anahtarlar sadece kullanıcı tarafından, sunucu tarafından bilmek olmayacaktır.

Ben bir kredi kartı veya bir şifre gibi, bir geri kazanılabilir gizli bilgileri depolamak için gereken bir web sitesi yapmak için gereken zaman, ne yapmam openssl ile şifrelemek (http://www.php.net/manual/en/function.openssl-encrypt.php, ben bir PHP geliştiricisi değilim ama fikir ) herhangi bir dil için aynı:

openssl_encrypt (string $ veri, string $ yöntem, string $ parola)

burada:

  • $method: Bu şifre yöntemi, "AES-256-CBC" gibi birini seçin

  • $data: is the sensitive information (e.g. the user password or a credit card). Note that you need to serialize if necessary, e.g. if the information is an array of data, if you have many sensitive information to store

  • $password: Bu is not kullanıcı şifre değil, sadece kullanıcının bildiği gibi bir bilgi:

    • kullanıcı plaka
    • sosyal güvenlik numarası
    • kullanıcı telefon numarası
    • kullanıcı anne adı
    • kayıt sırasında e-posta ve / veya sms ile Sended rastgele bir dize

WARNING: veritabanına "şifre" argüman olarak kullanılan bilgileri saklamak ASLA (veya sistemde olursa olsun yer)

Yani, gerekli bu veriler sadece "openssl_decrypt ()" işlevini kullanın ve cevap için kullanıcı sormak retrive zaman. Örn: "To receive your password answer the question: What's your cellphone number?"

PS 1: Bir şifre olarak veritabanında saklanan verileri kullanmak asla. Eğer kullanıcı cep telefonu numarasını saklamak gerekiyorsa, o verileri kodlamak için bu bilgileri asla kullanmayın. Her zaman sadece kullanıcının bildiği ya da olmayan biri göreli bilmek zor hangi bir bilgileri kullanabilirsiniz.

PS 2: "tek tıklamayla satın alma" gibi kredi kartı bilgileri, için, ne yapmam giriş şifresini kullanmaktır. Bu şifre veritabanı (SHA1, md5, vb) karma, ancak oturum açma zaman ben oturumda veya kalıcı olmayan (yani belleğe) güvenli çerez düz metin parola saklamak edilir. Bu düz şifre oturumun sonunda imha, gerçekten de her zaman bellekte kalmak oluyor, veritabanında kalmak asla. Sistemin "tek tıklama satın alma" Düğmeye kullanıcı tıklama bu şifreyi kullanın. Kullanıcı vb facebook, twitter, gibi bir hizmet ile açmış olsaydı, o zaman (Tamam, tam anlamıyla bir "tıklama" değil, ama sadece bir kez istenecektir) zaman satın tekrar parolayı soracak ya da bazı verileri kullanmak (facebook id veya hizmeti tarafından döndürülen bir başka benzersiz sabit ve kamuya açık olmayan bilgileri gibi) hizmeti tarafından döndürülen.

PS 3: Bu funcion PHP için, ancak başka bir dilde geliştirmek durumunda fikri hala aynı.

PS 4: Eğer (sosyal numarası isteyin örn., ancak kullanıcı bilmiyorsanız, başka bir şey sormak için) aynı anda birçok "şifreleri" kullanabilirsiniz Eğer (kodlamak olmadan çeşitli alanlarda verileri sadece) bir kez kodlamak gerekir. Ama aksi halde bu yazı çok uzun olacak burada açıklamak istemiyorum.

Üzgünüz, ama sürece şifrelerini çözmek için bir yol var gibi, güvenli olacak bir yolu yok. Acı mücadele, ve eğer kaybedersem, CYA.

Ne şifreli ve kaybolmadan önce, kayıt sırasında şifresiz parola hakkında e-posta? Ben web sitelerinin çok bunu gördük, ve kullanıcının e-posta bu şifreyi almak sunucu / comp üzerinde civarında bırakarak daha güvenlidir ettik.

Benim için geçici olarak sadece sıfırlama / rekreasyon iş akışı için kullanıcının kimliğini doğrulamak için bir daha az faktör kullanırken, sıfırlamak veya şifrenizi yeniden inşa edebilir ya da düşünmek doğaldır bu yüzden, bir yaşam için birden çok faktörlü kimlik doğrulama sistemlerini uygulamak. Zaman penceresi önerilen iş akışı için kısa ise özellikle ek bazı faktörlerin olarak OTBMPS'dir (bir kerelik parolalar) kullanımı, riski çok azaltır. Biz büyük bir başarı ile (çoğu kullanıcı zaten bütün gün kendileri ile taşımak bu) akıllı telefonlar için yazılım OTP jeneratörler uyguladık. Önce ticari bir fiş yakınıyor ne dediğimi de bir kullanıcının kimliğini doğrulamak için kullanılan tek faktör değildir biz kolayca geri alınabilir veya sıfırlanamayan şifreleri tutmak doğasında riskleri daha düşük olabilir, görünür. Ben kullanıcı o / o da diğer siteler açmak istiyor çünkü orijinal şifre var ısrar edecek gibi siteler senaryolar arasında şifre yeniden kullanım için durum hala oldukça olmadığını kabullenmek, ama sen yeniden şifresini teslim deneyebilirsiniz mümkün olan en güvenli yolu (HTPPs ve html sağduyulu görünüm).

Bir kullanıcı orijinal şifre almak için izin tek yolu, encrypt it with the user's own public key. Sadece bundan sonra kullanıcı şifrelerini deşifre edebilirsiniz etmektir.

Yani adımlar olacaktır:

  1. Kullanıcı henüz bir parola belirlemeden (tabii SSL üzerinden) sitenizde kaydeder. Bunları otomatik olarak oturum veya geçici bir şifre sağlar.
  2. Gelecekteki şifre alımı için kamu PGP anahtarını saklamak için sunuyoruz.
  3. Onlar kamu PGP anahtarı yükleyebilirsiniz.
  4. Yeni bir parola ayarlamak için isteyin.
  5. Onlar şifrenizi girin.
  6. Kullanılabilir en iyi şifre karma algoritması (örn. bcrypt) kullanarak şifreyi karma. Sonraki log-in doğrularken bu kullanın.
  7. Sen genel anahtar ile şifresini şifrelemek ve mağaza o ayrı.

Kullanıcı daha sonra parola sormak durumunda, şifrelenmiş (karma değil) şifre ile yanıt verir. Kullanıcı gelecekte şifre almak mümkün istemezse (bunlar yalnızca bir hizmet oluşturulan birine sıfırlamak mümkün olacaktır), adım 3 ve 7 atlanabilir.

Kayıp / unutulmuş şifreleri Taşıma:

Kimse şifreleri kurtarmak gerekir.

If users forgot their passwords, they must at least know their user names or email addresses. Upon request, generate a GUID in the Users table and sent an email containing a link containing the guid as a parameter to the user's email address.

Bağlantı arkasında sayfa parametresi guid gerçekten (muhtemelen bazı zaman aşımı mantığı ile) var, ve yeni bir şifre için kullanıcıya sorar doğrular.

Eğer hattı kullanıcılara yardımcı olması gerekiyorsa, sizin hibe modeli için bazı rolleri eklemek ve hattı rol geçici olarak belirlenen kullanıcı giriş için izin verir. Tüm bu hattı giriş yapın. Örneğin, Bugzilla yöneticileri için böyle bir kimliğe bürünme özelliği sunuyor.

Just came across this interesting and heated discussion. What surprised me most though was, how little attention was payed to the following basic question:

  • Q1. Kullanıcı düz metin saklanan parola erişimi olan ısrar gerçek nedenleri nelerdir? Neden bu kadar çok değer taşımaktadır?

Kullanıcıların yaşlı ya da genç, bilgi gerçekten bu soruya cevap vermez. Ama nasıl bir iş kararı doğru anlaşılması müşterinin endişe olmadan yapılabilir?

Now why it matters? Because if the real cause of customers' request is the system that is painfully hard to use, then maybe addressing the exact cause would solve the actual problem?

Ben bu bilgileri yok ve bu müşteriler için konuşamıyor gibi, ben sadece tahmin edebilirsiniz: Bu kullanılabilirlik hakkında, yukarıya bakın.

Ben sordum gördük Başka bir soru:

  • Q2. Kullanıcı ilk etapta şifre hatırlamak değil, neden eski şifre önemli?

And here is possible answer. If you have cat called "miaumiau" and used her name as password but forgot you did, would you prefer to be reminded what it was or rather being sent something like "#zy*RW(ew"?

Başka bir olası neden kullanıcı yeni bir şifre ile gelip zor bir iş düşünüyor olmasıdır! Böylece geri gönderilen eski şifreyi sahip yine o acı işten onu kurtarmanın yanılsamasını verir.

Ben sadece nedenini anlamaya çalışıyorum. Ama nedeni ne olursa olsun, bu sebep değil ele alınması gereken nedenidir.

Kullanıcısı olarak, ben şeyler basit istiyorum! Ben çok çalışmak istemiyorum!

Ben gazete okumak için bir haber sitesinde oturum açarsanız, ben şifre olarak 1111 yazın ve üzerinden olmak istiyorum!

Ben güvensiz olduğunu biliyorum ama birisi benim "hesabı" erişim alma hakkında ne umurunda? Evet, o haberler çok okuyabilirsiniz!

Does the site store my "private" information? The news I read today? Then it is the site's problem, not mine! Does the site show private information to authenticated user? Then don't show it in first place!

Bu sadece sorunun kullanıcının tutum göstermektir.

Yani özetlemek gerekirse, ben o müşterilerine gerçek endişelerini gidermek için nasıl (biz imkansız olduğunu biliyoruz) "güvenli" mağaza düz metin parolalar için değil, nasıl bir sorun hissetmiyorum.

open a DB on a standalone server and give an encrypted remote connection to each web server that requires this feature.
it does not have to be a relational DB, it can be a file system with FTP access, using folders and files instead of tables and rows.
give the web servers write-only permissions if you can.

Store the non-retrievable encryption of the password in the site's DB (let's call it "pass-a") like normal people do :)
on each new user (or password change) store a plain copy of the password in the remote DB. use the server's id, the user's ID and "pass-a" as a composite key for this password. you can even use a bi-directional encryption on the password to sleep better at night.

şimdi birisi hem de şifresini almak ve bu bağlam (site id + kullanıcı id + "pass-a") Neler için sırayla, o vardır:

  1. Bir ("pass-a", kullanıcı kimliği) çifti veya çiftleri almak için web sitesini DB kesmek.
  2. Bazı yapılandırma dosyasından web sitesinin kimliği almak
  3. bulmak ve uzak şifreleri veritabanına kesmek.

you can control the accessibility of the password retrieval service (expose it only as a secured web service, allow only certain amount of passwords retrievals per day, do it manually, etc.), and even charge extra for this "special security arrangement".
The passwords retrieval DB server is pretty hidden as it does not serve many functions and can be better secured (you can tailor permissions, processes and services tightly).

bütün olarak, size hacker için zor iş yapmak. tek bir sunucu üzerinde bir güvenlik ihlali şansı hala aynı, ancak anlamlı veri (hesap ve şifre bir maç) monte etmek zor olacaktır.

Kullanıcılar really onlar unuttum şifre ne (örneğin söylenmesi), ya da sadece sistem üzerine elde edebilmek gerekiyor kurtarmak gerekir mi? Ne gerçekten istediğiniz oturum için bir şifre varsa, neden sadece destek kişinin şifresini kaybetmiş kişiye verebileceğiniz yeni bir şifre eski şifreyi (ne olursa olsun) değiştiren bir rutin yok?

Ben tam olarak bunu yapmak sistemleri ile çalıştım. Destek kişi güncel şifre nedir bilmenin bir yolu vardır, ancak yeni bir değer döndürebilirsiniz. Tabii ki tüm bu sıfırlar bir yere giriş yapmalı ve iyi uygulama parola sıfırlama olduğunu ona anlatmaya kullanıcıya bir e-posta oluşturmak olacaktır.

Bir başka olasılık bir hesaba erişim izin eşzamanlı iki şifreleri sahip olmaktır. Bir kullanıcı yönetir ve diğer tek destek personeli tarafından bilinen ve tüm kullanıcılar için aynı olduğunu bir iskelet / master anahtar gibi olduğunu "normal" parola. Bir kullanıcı destek kişinin ana anahtar ile hesabınıza giriş ve kullanıcı ne olursa olsun onun şifresini değiştirmek yardımcı olabilecek bir sorunu var bu şekilde. Söylemeye gerek yok, ana anahtar ile tüm oturumların yanı sıra sistem tarafından günlüğe edilmelidir. Ana anahtar her kullanıldığında ekstra bir önlem olarak siz de destek kişilerin kimlik bilgilerini doğrulamak olabilir.

-EDIT-bir ana anahtara sahip değil hakkında yorumlarına yanıt: Ben bunu kullanıcıdan başka kimsenin kullanıcının hesabına erişmesini sağlamak için kötü olduğuna inanıyorum gibi kötü olduğu konusunda hemfikir. Eğer soruya bakarsanız, bütün öncül müşteri bir çok tehlikeye güvenlik ortamını zorunlu olmasıdır.

Bir master anahtar ilk algılandığı gibi kötü olması gerekmez. Ben belli durumlarda "özel erişim" için mainframe bilgisayar operatörü ihtiyacını algılanan bir savunma fabrikasında çalışmak için kullanılır. Onlar sadece mühürlü bir zarf içinde özel bir şifre koymak ve operatörün masasına bantlanmış. (Operatör bilmiyordum) parolasını kullanmak için o zarfı açmak zorunda kaldı. Vardiya her değişiminde vardiya amirinin işleri bir zarf açılmış olsaydı ve bunu hemen şifre (başka bir bölüme göre) değişti olmadığını görmek oldu ve yeni şifre yeni bir zarfa koymak ve süreci tüm başladı tekrar. Operatör o açmıştı ve olay kayıt için belgelenmiş olur neden olarak sorguladı olacaktır.

Bu ben tasarlamak istiyorum bir prosedür değil iken, iş yaptım ve mükemmel hesap sağladı. Her şey kaydedilir ve gözden, artı tüm operatörler DOD gizli açıklıkları vardı ve biz herhangi bir kötüye yoktu edildi.

Çünkü inceleme ve gözetim, tüm operatörleri zarfı açma ayrıcalığını kötüye eğer derhal görevden alınması ve olası cezai kovuşturmaya tabi olduğunu biliyordu.

Yani, bir sağ bir güvenebilecekleri kişi işe şeyler yapmak istiyorsa gerçek cevabı sanırım arka plan kontrolleri yapmak ve doğru yönetim, gözetim ve hesap egzersiz.

Bu zavallı arkadaşın müşteri yönetimi iyi olsaydı ama sonra yine onlar şimdi, ilk etapta böyle bir güvenlik comprimised çözüm olacağını sordum değil mi?

Sadece karşı-argüman olarak bu konuda nasıl kurtarılabilir şifreleri saklamak gereksinimi reddetmek mümkün değil.

Biz düzgün şifreleri karma ve kullanıcılar için bir sıfırlama mekanizması oluşturmak, ya da biz sistemden tüm kişisel bilgileri kaldırabilirsiniz ya. Siz kullanıcı tercihlerini ayarlamak için bir e-posta adresini kullanabilirsiniz, ama bunun hakkında. Otomatik olarak sonraki ziyaretlerinizde tercihlerini çekin ve makul bir süre sonra vefat verileri atmak için bir çerez kullanın.

Genellikle şifre politikası ile göz ardı edilen bir seçenek, bir parola gerçekten hatta gerekli olup olmadığıdır. Şifrenizi politika yaptığı tek şey müşteri hizmetleri aramaları nedeni ise, belki ondan kurtulabilirsiniz.

Şu anda benim projelerin çoğu için bu yaklaşımı kullanıyorum,

$public_key = sha1("mysite.com");

/* While Registration */
$user_salt = sha1(uniqid(time()).$public_key); //Time Based Unique ID
$user_name = "helloworld"; //Entered by user
$user_pass = "123456"; //Most novice users will use this.

$secret_pass = sha1($user_pass . $user_name . $user_salt);

/**
 * In DB Store,
 * $user_name, $secret_pass, $user_salt
 */

/* While Login */
$user_name = "helloworld";
$entered_pass = "123456";

/**
 * Find $user_name from DB
 * If $user_name found than get $secret_pass and $user_salt from DB corresponding to that user
 */
$current_pass = sha1($entered_pass . $user_name . $user_salt);
if($current_pass === $secret_pass)
    /* User is Authenticated */