Tôi đang tìm cách (1) an toàn nhất và (2) cách đơn giản nhất để người dùng nhập mật khẩu trên dấu nhắc bash shell và để mật khẩu đó trở thành một phần của stdin cho chương trình.
Đây là những gì stdin cần phải trông giống như : {"username":"myname","password":"<my-password>"}
, đâu <my-password>
là những gì đã được gõ vào dấu nhắc shell. Nếu tôi có quyền kiểm soát chương trình stdin, thì tôi có thể sửa đổi nó thành lời nhắc an toàn cho mật khẩu và đặt nó vào vị trí, nhưng hạ lưu là một lệnh mục đích chung tiêu chuẩn.
Tôi đã xem xét và từ chối các phương pháp sử dụng như sau:
- người dùng nhập mật khẩu vào dòng lệnh: mật khẩu sẽ được hiển thị trên màn hình và cũng sẽ hiển thị cho tất cả người dùng thông qua "ps"
- Nội suy biến shell thành một đối số cho một chương trình bên ngoài (ví dụ
...$PASSWORD...
:): mật khẩu vẫn sẽ hiển thị cho tất cả người dùng thông qua "ps" - biến môi trường (nếu chúng được để lại trong môi trường): mật khẩu sẽ hiển thị cho tất cả các tiến trình con; ngay cả các quy trình đáng tin cậy cũng có thể làm lộ mật khẩu nếu chúng kết xuất lõi hoặc kết xuất các biến môi trường như một phần của chẩn đoán
- mật khẩu ngồi trong một tệp trong một thời gian dài, thậm chí một tệp có quyền hạn chặt chẽ: người dùng có thể vô tình để lộ mật khẩu và người dùng root có thể vô tình nhìn thấy mật khẩu
Tôi sẽ đặt giải pháp hiện tại của mình làm câu trả lời bên dưới, nhưng sẽ vui vẻ chọn câu trả lời tốt hơn nếu có ai đó đưa ra giải pháp. Tôi nghĩ rằng nên có một cái gì đó đơn giản hơn hoặc có thể ai đó nhìn thấy một mối quan tâm bảo mật mà tôi đã bỏ lỡ.