Truyền mật khẩu trong một biến môi trường cũng an toàn như việc chương trình đọc nó từ một tệp. Chỉ các quy trình chạy với cùng một người dùng mới có thể đọc môi trường của một quy trình và các quy trình này được phép đọc cùng một tệp.
Lưu ý rằng điều này khác với việc truyền mật khẩu trên dòng lệnh. Đối số dòng lệnh có thể đọc được bởi tất cả các quy trình đang chạy trên cùng một máy (chặn các biện pháp làm cứng), không chỉ các quy trình đang chạy như cùng một người dùng.
Nếu bạn chuyển một biến qua môi trường, hãy cẩn thận nếu chương trình khởi chạy các chương trình khác. Những chương trình khác sẽ kế thừa môi trường của cha mẹ họ. Vì vậy, đừng làm điều này nếu bạn sợ rằng các chương trình khác có thể vô tình làm rò rỉ nội dung trong môi trường của chúng.
Lỗ hổng trong kịch bản của bạn là có thể tạo ra một biến môi trường phù hợp khi hệ thống máy chủ được thiết lập. Một biến môi trường là một thuộc tính động của một quá trình. Bạn không thể tạo nó khi thiết lập một hệ thống, không phải nếu thiết lập bạn có nghĩa là một cái gì đó còn tồn tại khi khởi động lại. Ý bạn là có lẽ là quản trị viên đã sắp xếp cho biến này có mặt trong môi trường khi một người dùng nào đó đăng nhập. Điều này được thực hiện thông qua tệp cấu hình (thường ~/.pam_environment
hoặc ~/.profile
hoặc một tệp được đọc từ đó ~/.profile
). Vì vậy, trên thực tế, giải pháp này không di chuyển mật khẩu ra khỏi các tệp cấu hình.
Thiết lập mọi thứ để mật khẩu trong môi trường thời gian đăng nhập của người dùng không phải là một ý tưởng hay. Điều đó có nghĩa là mọi quy trình đang chạy vì người dùng đó sẽ có bí mật, do đó, nó dễ bị rò rỉ ở bất cứ đâu.
Mật khẩu phải được đặt trong một tệp nằm ngoài các tệp cấu hình nằm dưới sự kiểm soát phiên bản và từ các cơ chế triển khai thông thường. Bạn có thể đặt mật khẩu vào môi trường vào một lúc nào đó nếu thuận tiện, nhưng nên thực hiện với một bộ chương trình nhỏ nhất có thể.