Django 5 для начинающих

Прогресс по курсу:  9/1004

7.5 Авторизация через социальные сети посредством OAuth 2.0
3 из 3 шагов пройдено

Как сохранить секреты в безопасности?

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

Как мы можем прочитать из документации, в основном, что делает python-dotenv, это считывает пары ключ-значение из файла .env и устанавливает их как переменные среды для последующего извлечения.

Прежде всего, давайте установим этот модуль:

pip install python-dotenv

Затем создайте файл .env в корневом каталоге нашего проекта. Здесь мы поместим пары ключ-значение всех переменных среды, необходимых нашему приложению:

SECRET_KEY = 'django-insecure-xxxxxxxxx'

GITHUB_KEY = 'xxxxxxxxx'
GITHUB_SECRET = 'xxxxxxxxxxxxxxxxxx'

GOOGLE_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
GOOGLE_SECRET = 'xxxxxxxxxxxxxxxxxx'

Возьмите ключи из файла settings.py и удалите их оттуда, а в самое начала файла добавьте их импорт:

from dotenv import load_dotenv
import os
load_dotenv()

Теперь вместо того, чтобы раскрывать наши секретные ключи и ключи OAuth в настройках, давайте извлечем их через их имена ключей следующим образом:

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = str(os.getenv('SECRET_KEY'))

# social auth configs for github
SOCIAL_AUTH_GITHUB_KEY = str(os.getenv('GITHUB_KEY'))
SOCIAL_AUTH_GITHUB_SECRET = str(os.getenv('GITHUB_SECRET'))

# social auth configs for google
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = str(os.getenv('GOOGLE_KEY'))
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = str(os.getenv('GOOGLE_SECRET'))

 

Вот и все, с помощью этих простых шагов мы можем сделать наше приложение более безопасным.


  • Комментария
Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

.env надо добавить в .gitihnore или git автоматически его игнорирует?

На самом деле еще в самом начале курса создал отдельный файл для паролей и токенов и импортировал оттуда все эти секретные значения.

@Марат_Асылбаев, надо.

Здравствуйте на github 404 ошибка а в гугл 401 

Изменен Шамбер Егор

@Шамбер_Егор, до переноса секретов в .env файл работало?

@Дмитрий_Селезнев, да, все написал как у вас 

@Шамбер_Егор, выполните в терминале:

python manage.py shell

а затем импортируйте настройки и просмотрите все их значения:

from django.conf import settings
print(settings.SOCIAL_AUTH_GITHUB_KEY)
print(settings.SOCIAL_AUTH_GITHUB_SECRET)
print(settings.SOCIAL_AUTH_GOOGLE_OAUTH2_KEY)
print(settings.SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET)

они должны соответствовать своим правильным значениям, полученным в прошлых шагах.

Создал файл .env и перенес туда ключи, пробрасывает ошибку при авторизации через гитхаб и гугл

Изменен Кислинский Роман

@Кислинский_Роман, А можете прислать содержимое данной ошибки?

@Илья_Перминов, Как будто ключи не видит

 

Можете прислать файл настроек settings.py и файл .env мне на электронную почту perminoff-ilya@yandex.ru

@Илья_Перминов, Разобрался, спасибо)

@Кислинский_Роман, Тоже была такая ошибка, не понимал, что не так, мб не подгружает .env файл. Но все оказалось проще
мы из setting.py везде указывали такие названия: 

  • SOCIAL_AUTH_GITHUB_KEY = 'xxxxxxx'
  • SOCIAL_AUTH_GITHUB_SECRET = 'xxxxxxx'
  • SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'xxxxxxx'
  • SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'xxxxxxx'

А подгружаем через уже другие (как в инструкции):

  • GITHUB_KEY
  • GITHUB_SECRET
  • GOOGLE_KEY
  • GOOGLE_SECRET

Тест на внимательность в своем проекте!

@Константин_Малыхин, Видимо, хорошей идеей будет не менять названия переменных...