Jeśli korzystasz z systemu Linux, spójrz na / proc / * / environment i zdecyduj, czy zmienne środowiskowe są dobrym miejscem do przechowywania poufnych informacji, czy nie. / proc / self to bieżący proces:
$ tr '\0' '\n' < /proc/self/environ
USER=me
LOGNAME=me
HOME=/home/me
PATH=/usr/bin:/bin:/usr/sbin:/sbin
MAIL=/var/mail/me
SHELL=/usr/bin/sh
SSH_CLIENT=1.2.3.4 58195 22
SSH_CONNECTION=1.2.3.4 58195 7.8.9.0 22
SSH_TTY=/dev/pts/1
TERM=xterm
Nieważne, że ustawianie zmiennej środowiskowej prawdopodobnie gdzieś czyta plik.
Należy pamiętać, że użycie hasła oznacza, że hasło jest dostępne dla programu. Jeśli hasło nie jest podawane przez użytkownika, który wpisuje je za każdym razem, gdy program go potrzebuje, hasło to musi być dostępne tylko na podstawie dostępu do programu. Możesz zaszyfrować hasło lokalnie i pozwolić programowi odszyfrować za pomocą klucza, ale wszystko, co to robi, to zasłania hasło przed przypadkowym ujawnieniem; ktoś, kto ma taki sam dostęp jak program, może wykonywać te same czynności, co program, w tym czytać klucz szyfrujący.
Właściwy sposób to uruchomić aplikację jako konto z ograniczeniami i przechowywać hasło w pliku chronionym uprawnieniami na poziomie systemu plików. Mamy nadzieję, że możesz „dołączyć” plik lub podobny plik, aby utrzymać hasło poza systemem kontroli wersji (zakładając, że VCS nie ma kontroli bezpieczeństwa). Aby zabezpieczyć się przed nieumyślnym ujawnieniem, ukryj hasło w dowolny sposób - koduj kod base64, użyj pgp do szyfrowania, cokolwiek ma sens w zestawie opcji programu serwera. Jeśli piszesz program, aby to zrobić, najlepiej jest poprosić użytkownika o hasło tylko w razie potrzeby, a następnie usunąć hasło z pamięci, gdy tylko zostanie użyte.