Каков наилучший способ скрыть пароль? - PullRequest
11 голосов
/ 15 марта 2011

У меня есть скрипт Python, который подключается к базе данных.Для этого, очевидно, мне нужен пароль.Мне нужно где-то спрятать.

Моя проблема в том, что этот код хранится в папке, которую могут просматривать все, кто имеет доступ к серверу.Итак, если я напишу этот пароль в зашифрованном виде в файле, в коде появится ключ для его обнаружения, и люди смогут его выяснить.

Так что, пожалуйста, если у кого-то есть идея ...

Ответы [ 5 ]

9 голосов
/ 15 марта 2011

Вы используете язык сценариев и обращаетесь к базе данных напрямую с помощью пароля. Независимо от того, что вы делаете, на каком-то уровне этот пароль будет легко доступен. Затенение не очень-то тебя покупает.

Вы должны полагаться на безопасность и разрешения компьютера и, возможно, на базу данных (ограничивая доступ с этого конкретного компьютера и пользователя).

7 голосов
/ 15 марта 2011

Не храните учетные данные подключения к базе данных в файле Python вообще.Вместо этого храните их в безопасном месте, доступном для чтения только той учетной записи пользователя, под которой будет запускаться сценарий.

Например, создайте учетную запись пользователя для выполнения этого задания и создайте файл в домашнем каталоге этой учетной записи пользователя.(доступно для чтения только этому пользователю) с именем database.ini и поместит туда строку подключения к базе данных и пароль.Затем используйте класс Python ConfigParser в стандартной библиотеке для чтения файла.

Тогда задание всегда можно запустить под этой учетной записью пользователя.Вы также можете запустить его под своей учетной записью, поместив файл database.ini в свой домашний каталог с правильными учетными данными, но любой, кто не имеет учетных данных, не сможет запустить его.

1 голос
/ 15 марта 2011

Проверьте этот вопрос.Они предлагают кодировать пароль в base64 (вне сценария), затем включать эту строку в сценарий и преобразовывать его обратно перед установлением соединения

0 голосов
/ 15 марта 2011

Просто чтобы подтвердить сказанное Брайаном, если программа запускается автоматически (то есть без возможности запрашивать пароль у пользователя), любая программа, работающая под тем же полномочием пользователя, имеет такой же доступ к любому паролю.Не ясно, что еще вы могли бы сделать.Возможно, если (доверенная) операционная система на клиентском компьютере могла бы подтвердить хосту, что к нему обращалась программа, запущенная по определенному пути, хосту можно было бы сказать «Только откройте базу данных в / var / lib / tomcat / bin/ tomcat на appserver.example.com ".Если вы сделаете все это, злоумышленнику придется скомпрометировать исполняемый файл tomcat, чтобы получить доступ к базе данных.

0 голосов
/ 15 марта 2011

Более продвинутая идея - выполнить аутентификацию mysql вручную.То есть, изучите протокол mysql (это стандартное рукопожатие с вызовом и ответом) и выполните процедуру самостоятельно.Таким образом, вы никогда не отправляете пароль напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...