Dưới đây là hình ảnh của quá trình tôi thực hiện để tạo người dùng trên bash trong Linux.
Tôi hiểu rằng mật khẩu không nên được hiển thị cho mục đích bảo mật, nhưng ý tôi là, tại sao các dấu sao (hoặc các ký tự tôi đã nhập) không xuất hiện?
Dưới đây là hình ảnh của quá trình tôi thực hiện để tạo người dùng trên bash trong Linux.
Tôi hiểu rằng mật khẩu không nên được hiển thị cho mục đích bảo mật, nhưng ý tôi là, tại sao các dấu sao (hoặc các ký tự tôi đã nhập) không xuất hiện?
Câu trả lời:
Bởi vì đó là cách chúng ta làm mọi thứ trên đất * nix. :) Nó cung cấp thêm một chút bảo mật bằng cách không hiển thị một loạt các dấu sao. Bằng cách đó, ai đó nhìn thấy màn hình của bạn không thể thấy độ dài của mật khẩu của bạn.
Nhưng tôi phải thừa nhận rằng hơi đáng sợ khi không nhận được bất kỳ phản hồi nào khi bạn nhập mật khẩu, đặc biệt là nếu bạn có một bàn phím xấu. Vì vậy, hầu hết hộp thoại mật khẩu GUI trên các hệ thống * nix đều cung cấp cho bạn một số loại phản hồi, ví dụ như sử dụng dấu hoa thị hoặc phổ biến hơn là. Và một số thậm chí hiển thị từng ký tự khi bạn nhập nó, nhưng sau đó ngay lập tức thay thế nó bằng một *
hoặc, nhưng điều đó không tốt nếu ai đó có thể nhìn qua vai bạn. Hoặc nếu họ có một thiết bị có thể nhận và giải mã tín hiệu video được gửi từ máy tính của bạn đến màn hình của bạn.
stty -echo
Cách đơn giản nhất để ẩn đầu vào của người dùng là gì?
Không hiển thị nó!
Ẩn mật khẩu khi chúng được gõ là một truyền thống cũ. Theo nghĩa từ góc độ bảo mật trong hầu hết các bối cảnh: nếu ai đó đang nhìn qua vai bạn, bạn không muốn làm cho nó dễ dàng để xem những gì bạn đang gõ. (Một số nguyên tắc bảo mật hiện đại ví dụ 1 2 3 4 5 tôi khuyên bạn nên có một tùy chọn để làm cho mật khẩu mặc dù có thể nhìn thấy, bởi vì đó cho phép người dùng có thể chọn mật khẩu phức tạp hơn và có niềm tin rằng họ sẽ không được dành thời gian của họ cố định vô hình Lỗi chính tả. Rủi ro lớn nhất không phải là lướt vai, đó là đoán vũ phu, có thể là ngoại tuyến.)
Khi đã quyết định rằng mật khẩu sẽ bị ẩn, những người thực hiện phải quyết định cách thực hiện. Thiết bị đầu cuối có chế độ hiển thị đầu vào của người dùng (bật lại) và chế độ mà đầu vào của người dùng không được hiển thị (tắt tiếng vang). Chế độ tắt tiếng vang có sự tồn tại nội tại theo một cách: đó là chế độ mà thiết bị đầu cuối không thực hiện thêm công việc lặp lại đầu vào của người dùng. Chế độ này cũng phải tồn tại cho các ứng dụng khi nhập khóa không chèn ký tự đó, nhưng thay vào đó, gọi một số phím tắt ứng dụng được liên kết với phím đó. Vì vậy, các lệnh như passwd
chỉ đặt thiết bị đầu cuối thành chế độ tắt trong khi chúng đang đọc mật khẩu.
In dấu hoa thị cho mỗi ký tự sẽ yêu cầu công việc triển khai thêm chỉ vì một lợi ích tương đối nhỏ, điều mà những người thực hiện passwd
lệnh không cảm thấy thích làm. Không có chế độ đầu cuối để in dấu sao vì đây sẽ là một tính năng rất chuyên dụng, chỉ hữu ích khi nhập mật khẩu.
Nhân tiện, nếu bạn muốn xem mật khẩu của mình khi thay đổi mật khẩu, bạn có thể sử dụng cat | passwd
(ít nhất là trên một số hệ thống - một số phiên bản passwd
yêu cầu một tùy chọn như cat | passwd --stdin
và một số không chấp nhận điều này). (Bạn thậm chí có thể làm { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd
, nhưng đừng làm vậy: nó sẽ lưu mật khẩu trong lịch sử shell, từ đó có nhiều rủi ro bị rò rỉ hơn.) Sắp xếp cho điều đó bằng các lệnh đọc mật khẩu từ thiết bị đầu cuối chứ không phải bất cứ điều gì đầu vào tiêu chuẩn của họ, như sudo
hoặc ssh
, phức tạp hơn; nếu bạn có sẵn GUI, bạn có thể sử dụng ssh-askpass để hiển thị bao nhiêu ký tự bạn đã nhập ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A
đối với sudo; đối với ssh, nó sẽ phức tạp khi bạn gọi nó từ thiết bị đầu cuối).
Làm cho mật khẩu trở nên vô hình làm cho nó an toàn hơn, vì người khác không thể nhìn thấy độ dài của mật khẩu. Điều này tránh nguy cơ người khác cố gắng đoán mật khẩu từ độ dài của nó và đăng nhập vào tài khoản của bạn.