Tại sao các trang web nhất định ngăn không gian trong mật khẩu?


16

Có vẻ như ít phổ biến hơn với các trang web mới hơn, nhưng nhiều trang web tôi cần có tài khoản trên (như để thanh toán hóa đơn, v.v.) ngăn tôi tạo mật khẩu có khoảng trắng trong đó. Điều này chỉ làm cho mọi thứ trở nên khó nhớ hơn và tôi biết rằng không có hạn chế về cơ sở dữ liệu hoặc lập trình đối với các khoảng trắng trong mật khẩu, được mã hóa hoặc (trời cấm) nếu không. Tại sao, sau đó, phím cách thường bị phân biệt đối xử khi đăng ký một trang web?


Có thể một số trang web sử dụng Đăng nhập một lần, giả sử rằng SSO yêu cầu mật khẩu không trống (mặc dù không chắc chắn)!
NoChance

1
Điều thực sự làm tôi sợ, là khi các trang web đặc biệt không cho phép trích dẫn. Bạn có thể có lý do gì, ngoài việc kích hoạt "insert into USERS (..., password) values (..., '" + $POST['password'] + "');" : -S
Christian Klauser

Đáng lẽ phải đi bảo mật chứ không phải lập trình viên. Điều này có lẽ đã tồn tại ở đó mặc dù.
Dan McGrath

Câu trả lời:


20

Có một số lượng lớn sự ngu ngốc khi nói đến mật khẩu trong các trang web.

  • Một số có lý do kỹ thuật hoàn toàn (hợp lệ hay không, đó là một câu hỏi khác, nhưng gần như tất cả chúng đều không):

Mật khẩu của bạn phải có bốn ký tự và chỉ có các chữ số.

(Bằng cách giới hạn mật khẩu ở phạm vi 0001 .. 9999, bạn chỉ cần lưu trữ chúng dưới dạng số, văn bản gốc, trong cơ sở dữ liệu)

  • Khác được giải thích bởi một số suy nghĩ sai lầm rằng họ sẽ làm cho mật khẩu an toàn hơn :

Mật khẩu của bạn phải bắt đầu bằng chữ in hoa và kết thúc bằng một chữ số.

(Bằng cách này, nhà phát triển hoặc người quản lý đã cho rằng điều này thực sự sẽ buộc người dùng chọn mật khẩu an toàn, trong khi quy tắc là "Mật khẩu của bạn phải chứa tối thiểu 6 ký tự và chứa ít nhất một chữ in hoa, chữ thường và một chữ số "sẽ không thực hiện được điều đó)

  • Cuối cùng, được giải thích bởi thực tế là mật khẩu được lưu trữ trên bản rõ và có một số sự mơ hồ về cách chúng được lưu trữ, xử lý hoặc truy xuất và không có thời gian để kiểm tra chúng.

Mật khẩu của bạn chứa một ký tự không hợp lệ é.

hoặc là,

Mật khẩu của bạn y$₯46¥*A'xD<7&฿=ᴙcN&sF5_Ở!dchứa một số ký tự không hợp lệ. Chỉ sử dụng các ký tự từ bảng chữ cái Latinh và chữ số.

hoặc là,

Mật khẩu của bạn không thể chứa các ký tự khoảng trắng.

Trong cả ba trường hợp, nhà phát triển chỉ đảm bảo rằng mật khẩu như thế này sẽ được lưu trữ chính xác.

  • Trong trường hợp đầu tiên, điều gì ésẽ xảy ra %C3%A9nếu được gửi thành khi gửi? Hoặc nếu cơ sở dữ liệu sẽ lưu trữ ékhông chính xác?

  • Trong trường hợp thứ hai, điều gì sẽ xảy ra nếu PHP (tại sao PHP?) Không thể xử lý unicode và làm điều gì đó khủng khiếp khi nhận được mật khẩu như thế này? Nếu <nhân vật gây rắc rối thì sao? Điều gì xảy ra nếu &ký tự được hiểu là dấu phân cách trong một URL (giả sử rằng vì một số lý do, mật khẩu đang được gửi qua GET thay vì POST)? Điều gì xảy ra nếu 'được cơ sở dữ liệu diễn giải, bởi vì, hãy đoán xem, chúng ta không biết SQL Injection là gì và làm thế nào để tránh nó? Hoặc nếu 'được chuyển thành \'?

  • Trong trường hợp thứ ba, điều gì sẽ xảy ra nếu PHP (một lần nữa?) Cắt khoảng trắng trong một số trường hợp và không phải trong các trường hợp khác? Điều gì sẽ xảy ra nếu các quản trị viên (người có quyền truy cập mật khẩu người dùng trong bản rõ) bị mất vì họ chỉ thấy một khoảng trắng, trong khi người dùng đã đặt ba khoảng trắng liên tiếp ?

Trong cả ba trường hợp, những sự mơ hồ đó đều được giải quyết dễ dàng thông qua thử nghiệm , đặc biệt là thử nghiệm đơn vị. Nhưng trong một số lượng lớn các dự án, không có thử nghiệm nào cả , và không có thời gian để thử nghiệm (nhưng vẫn còn nhiều thời gian để gỡ lỗi sau này).

Điều này có nghĩa là liệu nhà phát triển có cố gắng nghĩ về hậu quả có thể xảy ra khi cho phép dấu cách hoặc ký tự unicode hoặc bất kỳ ký tự nào bên ngoài ASCII 48..57 65..90 97..122 (chữ số, chữ thường, chữ in hoa) , cách dễ nhất, khi kiểm tra là không thể, là chỉ cấm chúng .

Theo tôi, đây là lý do duy nhất để cấm không gian. Yannis Rizos đã đưa ra một lý do khác liên quan đến UX. Mặc dù là một lý do chính đáng trong lý thuyết, nó hoàn toàn không hoạt động trong thực tế: các trang web được tạo bởi những người thực sự quan tâm đến UX không sửa các quy tắc mật khẩu ngu ngốc. Thay vào đó, các trang web nơi khoảng trắng thực sự bị cấm phần lớn được thực hiện bởi những người chưa bao giờ nghe về UX . Điều này đặc biệt đúng vì việc cấm bất kỳ ký tự nào thực sự gây khó chịu theo quan điểm của UX, vì mọi hạn chế liên quan đến mật khẩu, bao gồm cả những hạn chế hữu ích, là số lượng ký tự tối thiểu.


Chưa kể rằng khi bạn loại bỏ khoảng trắng, bạn sẽ loại bỏ một loạt các mật khẩu dài dễ nhớ (và độ dài đã được chứng minh là hiệu quả hơn so với sự phức tạp chống bẻ khóa) và khuyến khích người dùng chấp nhận mật khẩu vô nghĩa ít đáng nhớ hơn một chuỗi dài của không gian.
Lèse majesté

1
Tôi đồng ý với hầu hết những gì tôi đọc được nghe, nhưng tôi có một thời gian thực sự khó khăn để tiêu hóa câu nói "cách dễ nhất, khi không thể kiểm tra ...". Không thể kiểm tra ??? Bất cứ ai đồng ý với một dự án xảy ra: sự ngu ngốc được tối đa hóa một cách hiệu quả ... Có tôi biết điều đó xảy ra: - |
Thomas

@Thomas: đây là sự khác biệt giữa lý thuyết và kiến ​​thức nói chung và thực tiễn với sự thiếu hiểu biết chung và hạn chế về thời gian, trong đó nhiều người không muốn lãng phí thời gian kiểm tra, bỏ qua rằng họ sẽ dành ít nhất hai lần để gỡ lỗi sau.
Arseni Mourzenko

Nó có thể là hợp lý để yêu cầu người dùng xác định một mật mã mà chỉ bao gồm các chữ số nếu mật mã cùng có thể cần thiết cho những thứ như truy cập điện thoại tự động, nhưng một mật mã như vậy không phải là chứng chỉ xác thực chính cho việc truy cập dựa trên máy tính.
supercat

3

Câu trả lời là Lịch sử

Chúng tôi dường như quên rằng cơ sở của rất nhiều này xuất phát từ một thời gian khi lưu trữ là không có hiệu quả miễn phí (trên đĩa hoặc trong bộ nhớ) khi khả năng của chúng tôi để quản lý tất cả những điều này đã phần nào ít hơn bây giờ và không kém phần khả năng của hệ thống tự động để cố gắng để cùng crack cũng có phần ít hơn.

Có rất nhiều ý kiến ​​trái chiều về mật khẩu dựa trên những gì chúng ta biết bây giờ và những gì chúng ta có thể làm bây giờ nhưng thực tế đơn giản là chúng ta thường xử lý sự kết hợp giữa tư duy kế thừa và hệ thống di sản.

Có nên hạn chế trong các hệ thống mới bây giờ ? Tôi hy vọng không - ít lý do hơn bây giờ


Bạn có nói rằng có những hạn chế về công nghệ với không gian trong mật khẩu mà trước đây không có? Phần nào đã lưu trữ chính xác chơi trong đó?
Ian Hunter

1
Tôi đề nghị rằng các giới hạn công nghệ và các ràng buộc bên ngoài ít phức tạp hơn (và có thể sử dụng "trim") có nghĩa là mọi người nghĩ khác về những gì sẽ phù hợp và cho phép. Bạn có thể đặt giới hạn cho mật khẩu để đảm bảo rằng chúng có thể dễ nhớ vì việc đặt lại chúng khó hơn. Bạn có thể không mã hóa chúng vì đơn giản là đến một nơi mà bạn có thể đọc chúng (vào thời điểm đó) tương đối khó khăn (và trong mọi trường hợp các hệ thống không thể truy cập được từ thế giới bên ngoài). Thời điểm khác nhau, quá trình suy nghĩ hoàn toàn khác nhau đã để lại một di sản
Murph

2

IMHO, thật ngu ngốc khi bất kỳ trang web / ứng dụng nào sử dụng tính năng băm và / hoặc muối hiện đại để lưu trữ mật khẩu để không cho phép có khoảng trắng trong mật khẩu. Nhưng, một số hệ thống cũ (đọc về điều này ở đâu đó) vẫn chuyển xung quanh mật khẩu trong bản rõ - vì vậy không cho phép không gian ở đó có thể có ý nghĩa. Ngoài ra, một số ứng dụng có thể "tước" tất cả các chuỗi đầu vào mà chúng nhận được. Vì vậy, mật khẩu bắt đầu hoặc kết thúc bằng một khoảng trắng sẽ không tốt (tất nhiên, điều đó đã bị chiếm dụng, nhưng bạn có thể tưởng tượng điều gì không thể xảy ra với hầu hết mọi người đến với trang web của chính mình). Không có gì "xấu" trong việc cho phép các khoảng trắng trong mật khẩu - như bạn chỉ ra, các DB sẽ không cho phép băm hoặc các phiên bản văn bản gốc.

Trên thực tế, hầu hết bạn bè Windows của tôi không biết rằng họ có thể sử dụng khoảng trắng trong mật khẩu của họ - Vì vậy, có thể, theo câu trả lời của Tim Medora, chủ sở hữu trang web không muốn có cơ hội với lamahs (xin lỗi) hoặc có thể một số người trong số họ có quan niệm sai lầm và / hoặc không biết gì về những lợi thế mà không gian có thể cung cấp.


1
Tôi thích tước không gian hàng đầu / dấu vết khỏi mật khẩu vì chúng có xu hướng gây ra sự cố nhưng đó không phải là lý do để không cho phép chúng - chúng sẽ bị tước cả cài đặt và thử nghiệm, không có vấn đề gì.
Loren Pechtel

Và chính xác thì "vấn đề" là gì? Tôi đã nhấn mạnh trong câu trả lời rằng không gian NÊN được phép. "Họ sẽ bị tước cả cài đặt và thử nghiệm" - Thế thì sao? sau đó "1 4m 1337" và "1 4 giờ sáng 1337" đều băm đến cùng một giá trị (thực tế, có vô số khả năng trong lý thuyết).
yati sagade

What's the point then?Điểm nhỏ là mật khẩu ít entropy như người dùng dự định. Và một số hệ thống cắt các lọ GET / POST theo mặc định, một sự thay đổi (không thể) đối với hành vi đó sẽ dẫn đến các vấn đề nghiêm trọng hơn.
yannis

@Yati sagade: Tôi KHÔNG nói về việc tước bỏ không gian nội bộ. Tôi đang nói về không gian hàng đầu và dấu vết - mọi người không nhận ra không gian ở đó và nó gây ra lỗi đăng nhập. Tương tự như vậy, nếu bạn thấy một mật khẩu mà tất cả các chữ hoa đều lật nó thành chữ thường, có lẽ ai đó đã không nhận ra khóa mũ được bật.
Loren Pechtel

-1

Nó được thực hiện vì cùng một lý do là nhiều trang web không cho phép dấu gạch ngang, dấu nháy đơn hoặc chữ cái không phải ASCII trong tên, mặc dù đây là những thực tiễn rất phổ biến ngay cả ở Hoa Kỳ và nó đòi hỏi nhiều công việc hơn để không cho phép các ký tự này hơn là chỉ cho phép họ

Nó cũng được thực hiện vì lý do tương tự nhiều bộ lọc từ của nhiều trang web sẽ không cho phép bạn sử dụng các từ như "cocky", "retardant" hoặc thậm chí "tích lũy" (mặc dù nhiều từ ngữ chủng tộc thông thường hoàn toàn ổn).

Đó là bởi vì rất nhiều nhà phát triển dường như hoàn toàn thiếu ý thức chung, hoặc ít nhất là có trí tưởng tượng rất hạn chế khi xem xét các đầu vào và kịch bản có thể có của người dùng. Một tỷ lệ nhỏ trong số họ có thể xử lý thông tin sai lệch (ngoại trừ các ký tự không phải là chữ và số bằng cách nào đó là một cách thực hành tiêu chuẩn hoặc thuật toán băm hoặc phương thức lưu trữ không thể xử lý khoảng trắng hoặc ký tự đặc biệt). Những người khác có thể chỉ đơn giản là lười biếng, họ lo lắng về các vấn đề bộ ký tự, vì vậy họ chỉ cần hạn chế đầu vào trong một không gian ký tự tối thiểu. Và sau đó có thể có những người đang thực hiện xác nhận / vệ sinh đầu vào quá nhiệt vì hoang tưởng do thiếu hiểu biết về các mối đe dọa thực sự.


Lý do nào bạn sẽ phải sử dụng một danh sách trắng ngoài việc thực thi mã hóa ký tự cụ thể? Thực tế là việc hạn chế các ký tự tùy ý không có lợi ích trong khi làm suy yếu mật khẩu người dùng chọn là những gì tôi dựa trên ý kiến ​​này. Tất cả các ví dụ tôi đưa ra là các triệu chứng của các nhà phát triển không suy nghĩ thông qua các lựa chọn thiết kế đủ cẩn thận.
Lèse majesté
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.