PHP Kayıt: şifreyi Otomatik oluşturmak veya kullanıcı bunu tercih edelim

5 Cevap php

Kayıt sırasında, ben kullanıcı parolası ayarlamanız gerekir nasıl tartışmaya değilim:

  • Kullanıcı bunu seçelim. Eğer bunu yaparsam, ben bazı stveartlar (uzunluk, zayıflık, vs, Regexes içerebilir) bu şekilde ve neden seçtiğinizde normalde ne yaparsınız zorlamak zorunda? Bunun için PHP için kullanılabilen bir kütüphane var mı?

  • Kullanıcının parolasını otomatik oluşturmak ve onlar sağlanan e-posta onlara e-posta. Onlar bu yüzden çok e-posta doğrulama bulunuyor şifreyi almadan giriş yapamıyorum. Sorun şifre kullanıcı hatırlamak için çok zor olabilir olduğunu. Ben onları daha kolay bir şeyle değiştirmek için izin verirseniz, o bana ilk etapta onlar için seçme amacı yendi. Ben bir e-posta (düz un karma şifresi gibi) aynı zamvea şifreyi iletme eylemi endişeleniyorum.

Ben ikincisine doğru eğilerek değilim, ama seçmeden önce bir daha bilgili cevabı tercih ederim. Ben de kullanım kolaylığı ve diğer teknik konular gibi dikkat etmiyorum şeyler muhtemelen vardır. Ne yaparsınız?

Edit: Based on the answers, I'm going with the first option then, letting the user choose. My question would then be, what password strength/length/etc. should I require, ve how do I enforce it? Are there PHP libraries available for that?

5 Cevap

I think there is only one answer to this. Let the user make her own password! Everything else is programmer lazyness and bad interaction design and customer friendlyness (IMO).

Şimdi bu kabul ya da bir seferlik bir hesap eğer insanlar daha sonra giriş gerekmez hangi kullanıcıların sadece bir handfull düşük öneme intranet sisteminin bazı tür, yani eğer, birkaç istisna görmek istiyorum .

You need to hash&salt your passwords anyways, even if you generate them yourself. All you need to add, is some validation rules at the first submit of the user. That's probably even easier to make than a good password generation tool.

Password strength

10 password strength meters hakkında yazılan bir bağlantı

Kullanıcının hayal aniden boş dönerse her zaman rastgele şifre hatırlatıyoruz. Tabii ki oluşturulan şifre (kendi kurallarına göre) "güçlü" olduğunu ve bir "yeni bir şifre öneririm"-düğmesi olurdu emin yaptı.

Farklı siteler için karmaşık şifreler ya da benzersiz şifreler istemeyen kullanıcılar her zaman ilk etapta onlara izin olurdu eğer onlar almış olurdu bir şekilde değişecektir. Bu durumda, onları sabırsız çünkü yaptı:

  • bir e-posta geçerli bir parola / aktivasyon kodunu gönderdi
  • onların e-posta gelen kutunuzu kontrol edin (ve belki de e-posta gelmesi için beklemek) yapılan
  • onların şifresini değiştirmek yaptı

Son bir tavsiye: yerine zorlamadan daha; teşvik etmek ve bir boyut şifre önemini vurgulamak. Şifre gücü ölçer, bunu yapmak için eğlenceli yollarından biridir.

PHP şifre gücü. Bu sayfa sizin ihtiyaçlarınıza uygun şekilde değiştirmek mümkün olmalıdır kadar temiz kod bazı temel kodu vardır. http://www.tutorialtoday.com/read%5Ftutorial/113/: kodu temellidir

Büyük / küçük / numaralar / sözcük olmayan / az 8 karakter için testler. Koşulların tümü yerine getirilirse gücü 5 eşit olacaktır.

$password = **HOW YOU GET THE PASS***($_POST['pass'])????; 
    $strength = 0; 
    // letters (lowercase) 
    if(preg_match("/([a-z]+)/", $password)) { 
        $strength++; 
    } 
    // letters (uppercase) 
    if(preg_match("/([A-Z]+)/", $password)) { 
        $strength++; 
    } 
    // numbers 
    if(preg_match("/([0-9]+)/", $password)) { 
        $strength++; 
    } 
    // non word characters 
    if(preg_match("/(W+)/", $password)) { 
        $strength++; 
    } 
   // longer than 8 characters
    if(strlen($password) > 8)) { 
        $strength++; 
    } 


    if ($strength >= 5)
      print "woo hoo";
    else
      print "bah";

Burada kod alphanumaric değerlerle Şifre oluşturmak için

function genRandomString() {
        $length = 8;
        $characters = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $string = "";    

        for ($p = 0; $p < $length; $p++) {
            $string .= $characters[rand(0, strlen($characters))];
        }

        return $string;
    }

Eğer aşağıdakileri yapın

$mailPass =genRandomString();

Erişim şifreleri vahşi içine düz yazı olarak gönderilecektir zaman şahsen ben çok rahatsız edici buluyorum. Ayrıca, kullanıcı herhangi bir durumda şifreyi değiştirmek için (umarım) ve bu nedenle üretilen ne daha başka bir şey için değişecektir yeteneğine sahip olacak. Böylece, neden kullanıcı o / o tarihi anda isteyen bir şifre almak için izin vermiyor? Bu yapabilir hazır js kütüphanelerin onlarca var gibi, tabii ki, zayıf şifreler (ve hatta belki de bir bütün olarak kendi kullanım izin vermemek) belirtmek için gerekliyse, ama gerçekten bu onay kalbi kod yok Senin için.