Скрытие пароля в скрипте Python (только небезопасное запутывание) - PullRequest
113 голосов
/ 01 октября 2008

У меня есть скрипт Python, который создает соединение ODBC. Соединение ODBC создается со строкой соединения. В этой строке подключения я должен указать имя пользователя и пароль для этого подключения.

Существует ли простой способ скрыть этот пароль в файле (просто никто не может прочитать пароль при редактировании файла)?

Ответы [ 16 ]

2 голосов
/ 01 октября 2008

Ваша операционная система, вероятно, предоставляет средства для безопасного шифрования данных. Например, в Windows есть DPAPI (API защиты данных). Почему бы не запросить у пользователя его учетные данные при первом запуске, а затем зашифровать их в зашифрованном виде для последующих запусков?

1 голос
/ 11 ноября 2017

Если вы работаете в Windows, вы можете использовать библиотеку win32crypt. Он позволяет хранить и извлекать защищенные данные (ключи, пароли) пользователем, который запускает сценарий, поэтому пароли никогда не хранятся в открытом тексте или в обфусцированном формате в вашем коде. Я не уверен, существует ли эквивалентная реализация для других платформ, поэтому при строгом использовании win32crypt ваш код не переносим.

Я считаю, что модуль можно получить здесь: http://timgolden.me.uk/pywin32-docs/win32crypt.html

1 голос
/ 02 октября 2008

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

0 голосов
/ 29 октября 2018

Это не точно отвечает на ваш вопрос, но это связано. Я собирался добавить в качестве комментария, но не было разрешено. Я имел дело с той же самой проблемой, и мы решили показать сценарий пользователям, использующим Jenkins. Это позволяет нам хранить учетные данные БД в отдельном файле, который зашифрован и защищен на сервере и недоступен для не администраторов. Это также позволяет нам немного ускорить создание пользовательского интерфейса и регулировать выполнение.

0 голосов
/ 28 июня 2016

Ты знаешь яму?

https://pypi.python.org/pypi/pit (только py2 (версия 0.3))

https://github.com/yoshiori/pit (будет работать на py3 (текущая версия 0.4))

test.py

from pit import Pit

config = Pit.get('section-name', {'require': {
    'username': 'DEFAULT STRING',
    'password': 'DEFAULT STRING',
    }})
print(config)

Пробег:

$ python test.py
{'password': 'my-password', 'username': 'my-name'}

~ / .pit / default.yml:

section-name:
  password: my-password
  username: my-name
0 голосов
/ 01 октября 2008

В сети есть несколько утилит ROT13, написанных на Python - просто найдите их в Google. ROT13 кодирует строку в автономном режиме, копирует ее в источник, декодирует в точке передачи.

Но это действительно слабая защита ...

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