Registrasi PHP: Buat kata sandi secara otomatis atau biarkan pengguna memilihnya

Saat pendaftaran, saya berdebat bagaimana saya harus mengatur kata sandi pengguna:

  • Biarkan pengguna memilihnya. Jika saya melakukan ini, saya harus menerapkan beberapa standar (panjang, kelemahan, mungkin melibatkan regex, dll.) Apa yang biasanya Anda lakukan ketika memilih cara ini dan mengapa? Apakah ada perpustakaan yang tersedia untuk PHP untuk ini?

  • Buat kata sandi secara otomatis untuk pengguna dan kirimkan melalui email ke email yang mereka berikan. Mereka tidak bisa masuk tanpa mendapatkan kata sandi jadi ini juga verifikasi email. Masalahnya adalah kata sandinya mungkin terlalu sulit diingat oleh pengguna. Jika saya mengizinkan mereka mengubahnya ke sesuatu yang lebih mudah, itu akan menggagalkan tujuan saya memilihnya untuk mereka. Saya juga khawatir tentang tindakan mengirimkan kata sandi (sebagai kata sandi biasa yang tidak di-hash) melalui email.

Saya condong ke arah yang kedua, tetapi lebih memilih jawaban yang lebih tepat sebelum memilih. Mungkin ada hal-hal yang tidak saya perhatikan seperti kenyamanan pengguna dan masalah teknis lainnya juga. Apa pekerjaanmu?

Sunting: Berdasarkan jawaban, saya akan memilih opsi pertama, membiarkan pengguna memilih. Pertanyaan saya kemudian adalah, apa kekuatan/panjang kata sandi/dll. yang harus saya minta, dan bagaimana cara menerapkannya? Apakah ada perpustakaan PHP yang tersedia untuk itu?


person Chris    schedule 12.10.2009    source sumber
comment
Memiliki kata sandi yang rumit tidak akan meningkatkan keamanan Anda karena pengguna Anda akan menyalin dan menempel atau mereka akan memiliki catatan di meja mereka dengan kata sandi Anda...   -  person jantimon    schedule 12.10.2009
comment
@Ghommey: Meskipun kata sandi yang rumit tidak meningkatkan keamanan dari sisi pengguna, namun meningkatkan keamanan dari jaringan. Artinya, misalnya serangan kamus yang ditujukan ke situs tidak akan berhasil. Meskipun ini mungkin merupakan poin yang agak teoritis.   -  person Ilari Kajaste    schedule 13.10.2009


Jawaban (5)


Saya pikir hanya ada satu jawaban untuk ini. Biarkan pengguna membuat kata sandinya sendiri! Yang lainnya adalah kemalasan programmer dan desain interaksi yang buruk serta keramahan pelanggan (IMO).

Sekarang saya akan melihat beberapa pengecualian, yaitu jika itu adalah semacam sistem intranet yang tidak penting dan hanya segelintir pengguna yang menyetujuinya atau jika itu adalah akun sekali pakai yang orang-orangnya tidak perlu masuk nanti. .

Anda tetap perlu melakukan hash & memberi garam pada kata sandi Anda, meskipun Anda membuatnya sendiri. Yang perlu Anda tambahkan hanyalah beberapa aturan validasi pada pengiriman pertama pengguna. Itu mungkin lebih mudah dibuat daripada alat pembuat kata sandi yang bagus.

Kekuatan kata sandi

Tautan ke postingan tentang 10 pengukur kekuatan kata sandi

person markus    schedule 12.10.2009

Anda selalu dapat menyarankan kata sandi acak jika imajinasi pengguna tiba-tiba menjadi kosong. Tentu saja Anda memastikan kata sandi yang dibuat adalah "kuat" (sesuai dengan aturan Anda), dan Anda akan memiliki tombol "sarankan kata sandi baru".

Pengguna yang tidak menginginkan kata sandi yang rumit atau kata sandi unik untuk situs berbeda akan selalu mengubah kata sandi yang mereka pilih jika Anda mengizinkannya. Dalam hal ini, Anda membuat mereka tidak sabar karena Anda:

  • mengirimkan kata sandi/kode aktivasi yang valid melalui email
  • membuat mereka memeriksa kotak masuk email mereka (dan mungkin menunggu email Anda tiba)
  • membuat mereka mengubah kata sandinya

Saran terakhir: daripada memaksa; mendorong dan menekankan pentingnya ukuran kata sandi. Pengukur kekuatan kata sandi adalah salah satu cara menyenangkan untuk melakukan hal ini.

person chelmertz    schedule 12.10.2009
comment
bagusnya, itu akan menjadi solusi sempurna dari sudut pandang pengguna. - person markus; 12.10.2009

Kekuatan kata sandi PHP. Halaman ini memiliki beberapa kode dasar yang merupakan kode bersih sehingga Anda dapat memodifikasinya sesuai kebutuhan Anda. Berdasarkan kode dari: http://www.tutorialtoday.com/read_tutorial/113/

Tes untuk huruf kecil/huruf besar/angka/bukan kata/setidaknya 8 karakter. Jika semua kondisi terpenuhi, kekuatannya akan sama dengan 5.

$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";
person easement    schedule 12.10.2009

di sini kode untuk menghasilkan Kata Sandi dengan nilai alfanumerik

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

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

        return $string;
    }

Anda melakukan hal berikut

$mailPass =genRandomString();
person Community    schedule 01.02.2012

Secara pribadi saya merasa sangat menjengkelkan ketika kata sandi akses dikirim melalui email sebagai teks jelas ke alam liar. Selain itu, pengguna bagaimanapun juga akan memiliki kemampuan untuk mengubah kata sandi (saya harap) dan oleh karena itu akan mengubahnya ke kata sandi lain selain yang Anda buat. Jadi, mengapa tidak mengizinkan pengguna untuk memilih kata sandi yang diinginkannya pada saat pendaftaran? Tentu saja, penting untuk menunjukkan kata sandi yang lemah (dan bahkan mungkin melarang penggunaannya secara keseluruhan), tetapi Anda tidak perlu membuat kode inti dari pemeriksaan ini, karena ada lusinan perpustakaan js siap pakai yang dapat melakukan ini. untukmu.

person clops    schedule 12.10.2009
comment
Secara umum, saya menentang kata sandi sebagai sebuah konsep secara keseluruhan. Pertimbangkan untuk menggunakan OpenID (seperti yang dilakukan situs ini) menggunakan tautan hash yang dikirim melalui email. - person clops; 12.10.2009
comment
openID baik-baik saja, tetapi Anda memerlukan kata sandi untuk openID Anda :) - person markus; 12.10.2009
comment
@clops: OpenID luar biasa... kecuali Anda bekerja dengan masyarakat umum, bukan pengguna StackOverflow. :) - person Ilari Kajaste; 13.10.2009