2010-07-03 40 views
7

Có điều gì đặc biệt về các ký tự được phép/không được phép trong mật khẩu không?Không cho phép ký tự trong mật khẩu?

Tôi lưu trữ mật khẩu trong db được băm/ướp muối và sử dụng PDO để ngăn chặn việc tiêm. Là những gì tôi đang làm đủ? Gần đây tôi đã gặp một hệ thống không cho phép một số ký tự, không nhớ tất cả các ký tự đó, nhưng một là ký hiệu và &. Họ đã làm điều đó vì lý do chống tiêm cơ sở dữ liệu, hay có cái gì khác tôi đang thiếu? Các ký tự mật khẩu có nên được giới hạn trong một nhóm ký tự nhất định hay không cần thiết?

+2

Tôi không nhớ bất kỳ nhân vật nào là vấn đề nếu bạn đang sử dụng trình giữ chỗ nhưng tôi có thể sai vì tôi không biết toàn bộ kiểm duyệt cũng như các ngôn ngữ khác ... nhưng có lẽ nếu bạn đang sử dụng UTF-8 và trình giữ chỗ cần đủ để chấp nhận bất cứ điều gì. – Prix

Trả lời

9

Không có lý do kỹ thuật nào để không cho phép bất kỳ ký tự nào trong mật khẩu. Tôi đoán trong trường hợp bạn mô tả, họ sẽ chỉ cho phép các ký tự chữ và số để tránh các vấn đề ở phía người dùng (giả sử, bằng cách nhập một ký tự không khả dụng trên bàn phím ở một quốc gia khác).

Nhiều nhà cung cấp và trang web buộc người dùng chọn mật khẩu rất phức tạp chứa số lượng tối thiểu và, đôi khi, các ký tự đặc biệt của evenb để ngăn chặn sự cố bắt buộc hoặc dictionary attacks.

Tôi không nghĩ rằng buộc mọi người chọn mật khẩu phức tạp là khôn ngoan. Mật khẩu bạn không thể nhớ, bạn sẽ viết xuống một nơi nào đó, mà thường tạo ra một nguy cơ bảo mật lớn hơn nhiều trong cuộc sống thực.

Giới hạn tốc độ đơn giản trong hệ thống đăng nhập (ví dụ: từ chối truy cập trong 15 phút sau 3 lần đăng nhập không thành công) sẽ làm giảm sự đe doạ đe dọa nghiêm trọng hơn.

Một người không phải đồng ý 100% với nó, nhưng tôi thấy bài báo khiêu khích này về chủ đề của Microsoft Research rất thú vị. So Long, And No Thanks for the Externalities: The Rational Rejection of Security Advice by Users

Từ trừu tượng:

Người ta thường cho rằng người sử dụng một cách vô vọng lười biếng và không có động lực về các vấn đề an ninh. Họ chọn mật khẩu yếu , bỏ qua cảnh báo bảo mật và bị lãng quên để xác nhận lỗi. Chúng tôi cho rằng việc từ chối của người dùng của lời khuyên bảo mật mà họ nhận được hoàn toàn hợp lý từ góc độ kinh tế. Lời khuyên cung cấp cho bảo vệ chúng khỏi chi phí trực tiếp của các cuộc tấn công, nhưng gánh nặng chúng với chi phí gián tiếp lớn hơn nhiều trong các hình thức nỗ lực.

+3

+1 vì không bắt buộc. =) –

+5

+1 không có giới hạn. Tôi không tin tưởng các trang web cảm thấy cần phải hạn chế mật khẩu của tôi - nó làm cho tôi tự hỏi tại sao họ cảm thấy cần phải hạn chế nó, và làm thế nào họ đang lưu trữ nó. – Mike

+4

Viết mật khẩu phức tạp của bạn không phải là một nguy cơ bảo mật vì không viết mật khẩu yếu hoặc dễ đoán. Hầu hết các cuộc tấn công được thực hiện từ xa. Nếu mọi người có quyền truy cập vào bàn của bạn, mật khẩu của bạn sẽ bị xóa, họ cũng sẽ có khả năng truy cập vật lý vào máy tính của bạn bằng cookie để bạn đăng nhập. Đó là trừ khi bạn mã hóa ổ cứng của mình, nhưng tôi không biết bất kỳ người nào -geek làm điều đó. Tôi không nghĩ rằng hệ thống khóa là một ý tưởng hay. Nó sẽ quá dễ dàng khi thực hiện một DoS với người dùng của bạn. Tất cả những gì tôi phải làm là thực hiện một vài lần thất bại trong tài khoản của bạn để khóa bạn. –

2

Tại sao bạn muốn giới hạn ký tự trong mật khẩu? Bạn nên làm một số loại băm. Mật khẩu của tôi thường chứa các ký hiệu đặc biệt bao gồm các ký hiệu không được bao gồm trên bàn phím.

Nếu bạn muốn giới hạn, chúng chỉ cần yêu cầu chúng phức tạp hơn, không phải ít hơn.

+2

"các ký hiệu đặc biệt bao gồm các ký hiệu không được bao gồm trên bàn phím", như gì? –

+1

trên hầu hết bàn phím, những chữ cái đó không xuất hiện: æøå –

+1

@Alix Axel: Ký tự unicode ngẫu nhiên hoặc những thứ có chr (c)> 127. Mật khẩu của tôi dài và được tạo ngẫu nhiên. Chúng được lưu trữ trong một cơ sở dữ liệu được mã hóa trên máy tính của tôi (đặc biệt là KeePassX). –

2

Điều duy nhất tôi không cho phép/dải trong mật khẩu là khoảng trắng, không có lý do gì để bỏ qua bất kỳ điều gì khác.

+3

Mm, tôi muốn nói điều đó tùy thuộc vào đối tượng mục tiêu của dịch vụ bạn đang cung cấp. Nếu họ là khách du lịch, tôi sẽ thận trọng. Giả sử bạn đang đi nghỉ ở một đất nước nơi Umlauts địa phương của bạn ('äöüß' trong trường hợp của tôi) không có sẵn trên bàn phím. Hầu hết mọi người không biết mã Alt + xyz để nhận chúng. Nó không phải là lỗi của bạn mà họ đã chọn sai mật khẩu trong trường hợp đó, nhưng nó có thể làm tất cả mọi người tốt để ngăn chặn nó. –

+3

Ở Bồ Đào Nha, chúng tôi không sử dụng Umlauts cho bất kỳ từ nào được nêu ra tất cả các bàn phím cömë với nó. Tuy nhiên, mọi người không ngu ngốc, nếu họ chọn một mật khẩu với Umlauts họ nên biết làm thế nào để có được chúng (có thể thông qua bàn phím trên màn hình hoặc bản đồ ký tự). Tôi ghét các trang web hạn chế mật khẩu với dấu gạch ngang chữ số, một bộ ký tự lớn hơn và được quốc tế hóa nhiều hơn có thể được nghiên cứu nhưng tôi nghi ngờ rằng nó sẽ được mọi người chấp nhận/ghi nhớ. –

+2

thú vị về bố cục bàn phím tiếng Bồ Đào Nha! Tuy nhiên, có rất nhiều umlauts mà không có sẵn ở nơi khác. Tôi có thể dễ dàng nhìn thấy một người dùng Đức chọn một mật khẩu có chứa 'ß' và sau đó không thể đăng nhập vào E-Mail của họ trong quán cà phê Internet ở Mallorca. Hầu hết người dùng không biết làm thế nào để có được bản đồ nhân vật - trang web sẽ phải cung cấp một bàn phím trên Logon .... Tôi đồng ý với bạn mặc dù chiều dài hạn chế và không cho phép chữ hoa chỉ là đồng bằng ngu ngốc. –

2

Khi tôi nhập mật khẩu, tôi thường muốn viết những câu dài hơn mà tôi có thể nhớ thay vì p" % &/k1 hoặc tương tự.

Vì vậy, hãy chắc chắn rằng bạn cho phép người dùng viết password dài hơn Nó luôn luôn làm tôi thất vọng, khi tôi buộc phải nhập một mật khẩu ngắn với các ký tự đặc biệt thay vì một ký tự dài hơn sẽ đáng nhớ hơn và an toàn hơn.

+3

Bạn sẽ không tin điều này nhưng một trong những ISP chính ở quốc gia của tôi hạn chế mật khẩu từ 6 đến 8 ký tự 0-9a-z. Họ thậm chí còn không cho phép viết hoa, tôi bị làm mờ bởi sự ngu xuẩn của họ. –

0

Tôi chỉ không cho phép các ký tự không thể nhập trên bàn phím chuẩn. Không có lý do gì khiến người dùng không thể chọn mật khẩu an toàn với 26 chữ hoa và chữ thường, 10 số và 20 ký tự.

Nếu bạn đang thực hiện hệ thống đăng nhập cho trang web công cộng, thay vì buộc người dùng chọn mật khẩu an toàn, tôi khuyên bạn nên sử dụng OpenID. Bằng cách đó, người dùng không cần nhớ mật khẩu khó nhớ mới chỉ dành cho trang web của bạn.

0

Không gây rối với mật khẩu của người dùng.

Chỉ cần đảm bảo rằng bạn đang sử dụng mã hóa và quy tắc nhất quán trong tất cả các giai đoạn xử lý mật khẩu của bạn. Trong trường hợp mã hóa của bạn không phải là một vấn đề như bạn đang lưu trữ muối. Ví dụ, tôi đã đi kèm với các quy tắc ngu ngốc như mật khẩu bị giới hạn 4 chữ số (!!!), chỉ ký tự chữ cái (az), và một số trang web học thuật cắt mật khẩu thành 10 ký tự và sau đó không thành công bạn đã cố đăng nhập bằng mật khẩu dài.

+0

Tôi làm cách nào để trả lời câu hỏi một tuần với câu trả lời đã được chấp nhận? – asr

0

Tôi tình cờ gặp câu hỏi này trong khi thực hiện một số nghiên cứu và tôi nghĩ mình đã phải đóng góp.

Thực ra, tôi cho rằng mật khẩu phải không phải chấp nhận bất kỳ ký tự nào. Vấn đề có thể đi kèm với các ký tự không phải là một phần của bảng ASCII chuẩn.

Lấy ví dụ, chữ ü (chữ thường u với âm sắc):

  • Trong ASCII mở rộng, nhân vật đó là 0x81.
  • Trong ISO-8859-1 (rất phổ biến ở các quốc gia phương Tây), đó là 0xFC.
  • Trong UTF-8 ü có điểm mã U + 00FC và do đó có thể được biểu diễn là 0xC3BC
  • Trong UTF-8, nhân vật cũng có thể không được chuẩn hóa. Vì vậy, nó có thể bao gồm các ký tự umlaut (chỉ là ¨) cộng với u: kết quả là một chuỗi khác nhau của byte.

Trong tất cả các trường hợp trên băm cho mật khẩu sẽ khác nhau và thông tin đăng nhập sẽ không thành công.

Một giải pháp khả thi để vẫn cho phép bất kỳ ký tự Unicode nào là đảm bảo toàn bộ trang sử dụng UTF-8 ở mọi nơi và chuẩn hóa mật khẩu (ví dụ: với chế độ NFC) trước khi băm chúng. Tuy nhiên, tại thời điểm này, có thể dễ dàng không cho phép bất kỳ ký tự nào không thuộc bảng ASCII chuẩn: byte 0x00-0x7F hoặc (thậm chí tốt hơn, tước các ký tự điều khiển và các ký tự khác không đại diện với dòng mới) 0x20-0x7E.

Các vấn đề liên quan