Безопасный способ доступа к базе данных PostgreSQL с использованием Python - PullRequest
0 голосов
/ 22 апреля 2019

Итак, у меня есть веб-приложение для колб, которое выполняет основные операции с базой данных.Я использую базу данных PostgreSQL.И я использую psycopg2 для доступа к нему.Вот фрагмент кода для получения моих данных.

import psycopg2
connection = psycopg2.connect(user="sysadmin",
                                  password="mypass",
                                  host="127.0.0.1",
                                  port="5432",
                                  database="myData")

Это не мой точный код, но он продемонстрирует мой вопрос.Как вы могли видеть, пароль и имя пользователя моей базы данных видны для любого, кто имеет доступ к коду моего сервера.Но я не чувствую, что написание пароля базы данных внутри программы - это безопасный способ!так что я надеялся, что кто-нибудь может указать на какие-то другие пути.Как это делают профессиональные веб-приложения, такие как Google и Facebook?

Ответы [ 2 ]

2 голосов
/ 22 апреля 2019

Одной вещью, которую вы могли бы рассмотреть, являются переменные окружения , которые позволили бы вам определять секретные значения в их среде, а не в самом коде. В python вы можете получить доступ к среде с помощью os.environ.get("variablename"); полный учебник для работы с ними в Python доступен здесь . Это то, сколько сервисов выбирают для управления секретами, и это значение по умолчанию для таких сервисов, как heroku.

1 голос
/ 22 апреля 2019

Я недавно изучал колбу и у меня был этот вопрос. В итоге я использовал файл «секретов» json для хранения информации для входа в систему, а также секретных ключей.

secretfiles.json

  {
  "web": {
    "app_id": "randomlongid",
    "app_secret": "randomlongkey",
    "user_name": "ausername",
    "user_pw": "randompassword"
  }
}

Затем я импортировал в свое приложение.

import json
import psycopg2

MY_PASS = json.loads(open('secretfiles.json', 'r').read())['web']['user_pw']

connection = psycopg2.connect(user="sysadmin",
                                  password=MY_PASS,
                                  host="127.0.0.1",
                                  port="5432",
                                  database="myData")


Я бы тогда добавил имя файла или просто *.json к моему .gitignore

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

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