2010-01-15 48 views
7

Tôi đã thử các loại khác nhau của Bộ kiểm tra mật khẩu hoặc mật khẩu, nhưng tất cả cung cấp cho tôi các kết quả khác nhau khi tôi kiểm tra cùng một Mật khẩu, vì mỗi thuật toán thực hiện thuật toán của riêng nó.Hướng dẫn cho một bộ đếm mật khẩu mật khẩu (Trình kiểm tra mật khẩu) Thiết kế

Có một số tiêu chuẩn hoặc hướng dẫn chính thức có thể theo dõi tôi để xây dựng Bộ đo cường độ mật khẩu của riêng mình không.

Nếu không có tiêu chuẩn chính thức, bạn nên kiểm tra tính năng Mật khẩu mạnh mẽ của tính năng nào?

+2

Tôi nghĩ rằng việc tiêu chuẩn hóa thuật toán sẽ làm suy yếu sức mạnh của nó, vì các nhân viên nam sẽ có một bộ quy tắc tốt và được xác định rõ ràng để tận dụng khi cố gắng crack mật khẩu. Nó sẽ dễ dàng hơn nhiều để hack mật khẩu của bạn nếu tôi biết rằng nó có 2-3 số, 5-6 chữ cái, và 1 của một bộ chấm câu nhỏ, hơn là nếu tôi có nhiều bóng tối hơn về các tiêu chí cụ thể của bạn. Không phải là câu trả lời, tôi biết. – Jay

Trả lời

3

xem xét như sau:

  • Chiều dài
  • trường hợp hỗn hợp
  • Không có nhiều ký tự lặp đi lặp lại
  • Bao gồm chữ cái, số, và các ký hiệu
  • Không bao gồm một phần của tên người dùng
  • Không giống với mật khẩu trước
  • Không băm để điều tương tự như một mật khẩu yếu
  • Không phải là một bộ bàn phím
  • là không liên quan đến cá nhân
  • Không kết thúc với hậu tố chung
  • Không bắt đầu bằng tiền tố phổ biến

Xem Bruce Schneier post on passwords cũng như this post.

+0

bài viết tuyệt vời của Schneier. rất hữu ích. Cảm ơn. – RRUZ

1

Theo như tôi biết không có tiêu chuẩn vì có nhiều định nghĩa về mật khẩu tốt (nghĩa là mạnh).

Một số điều cần xem xét:

  • Chiều dài - càng lâu thì càng tốt
  • trường hợp hỗn hợp
  • Bao gồm số cũng như các nhân vật
  • Bao gồm phi alpha ký tự số
  • Không phải là một từ điển từ
  • Là một cụm từ

và vân vân

+0

"Không bao gồm các ký tự số alpha"? Bạn vừa nói trong dòng trước "Bao gồm số cũng như ký tự" là chữ số-alpha? –

+0

Đó là lỗi đánh máy. Đã sửa lỗi. – ChrisF

0

Tôi cũng muốn thêm: Không bao gồm chuỗi tên người dùng hoặc thậm chí là một phần của tên người dùng nếu đó là một con đường dài.

0

tôi sẽ ném tiêu chí khác trong vòng:

  • Không "bàn phím đi"

Bởi vì rất nhiều người mong đợi người dùng ghi nhớ mật khẩu mà khó có thể nhớ, họ dùng đến bàn phím các mô hình để chế ngự sự điên rồ. Ném các phiên bản được dịch chuyển để có biện pháp tốt.

Ồ, và không có gì trên Twitter's forbidden password list, một trong hai.

0

Có một số nguyên tắc (google) cung cấp hướng dẫn về những gì tạo mật khẩu mạnh, hầu hết trong số đó là thông thường. Vào cuối ngày, bạn có thể áp dụng chính sách của riêng bạn (hoặc chính sách của Công ty nếu họ có) cho những gì mạnh và cái gì không và quyết định của bạn có thể bị ảnh hưởng bởi những gì bạn đang cố bảo vệ.

Như @jay đã nói, tôi không nghĩ tiêu chuẩn hóa một thứ như vậy sẽ là một thực hành khôn ngoan!

http://net.tutsplus.com/tutorials/javascript-ajax/build-a-simple-password-strength-checker/

http://www.ibm.com/developerworks/lotus/library/ls-password_quality/index.html#N100F5

tưởng trang web này là đặc biệt tốt vì nó mang lại một ý tưởng của thuật toán họ đang áp dụng và làm thế nào họ tính toán sức mạnh.

http://www.passwordmeter.com/

0

Sức mạnh của mật khẩu phải được kiểm tra trên danh nghĩa của một vài thông số như sự hiện diện của ký tự đặc biệt và số, độ dài của mật khẩu, vv

Vui lòng kiểm tra liên kết này:

http://tinytute.com/2014/06/03/animated-password-strength-checker-quick-easy/

Các Khối mã jQuery:

$ (tài liệu) .ready (function() {

$("#textBox").keyup(function(){ 

    var passWord = $("#textBox").val(); 
    var passLength = passWord.length; 
    var specialFlag = 0; 
    var numberFlag = 0; 
    var numberGenerator = 0; 
    var total = 0; 

    if(/^[a-zA-Z0-9- ]*$/.test(passWord) == false) { 

     specialFlag =20; 
    } 


    if(passWord.match(/[0-9]/)) { 

     numberFlag = 25; 
    } 

    if(passLength>4&&passLength<=6){ 
     numberGenerator =25; 
    }else if(passLength>=7&&passLength<=9){ 
     numberGenerator =35; 
    }else if(passLength>9){ 
     numberGenerator =55; 
    }else if(passLength>0&&passLength<=4){ 
     numberGenerator =15; 
    }else{ 
     numberGenerator =0; 
    } 

    total = numberGenerator + specialFlag + numberFlag; 
    if(total<30){ 
     $('#progressBar').css('background-color','#CCC'); 
    }else if(total<60&&total>=30){ 

     $('#progressBar').css('background-color','#FF6600'); 

    }else if(total>=60&&total<90){ 

     $('#progressBar').css('background-color','#FFCC00'); 

    }else if(total>=90){ 

     $('#progressBar').css('background-color','#0f0'); 

    } 
    $('#progressBar').css('width',total+'%'); 

}); 

});