Зачем скрывать секретный ключ django?
Я хотел спросить, почему я должен скрывать секретный ключ в приложении Django? Почему бы просто не зафиксировать его в публичном контроле исходников? Я понимаю последствия того, что злоумышленник узнает секретный ключ (из здесь). Но если я просто загружу код на github и попрошу людей скачать его, запустить python manage.py runserver и перейти на 127.0.0.1:8000, мне не нужно его скрывать, верно? Разве эти эффекты раскрытия секретного ключа не применимы, когда вы запускаете код на своем устройстве, используя его в качестве сервера, и заставляете людей зайти на него по публичному URL? Если они запускают его на своем устройстве, это не представляет угрозы безопасности для меня, верно?
Я читал, что знание секретного ключа может позволить им обойти проверку формы и т.д. Но они просто испортят базу данных своей локальной установки приложения, так почему меня это должно волновать?
Секретный ключ Django используется для таких вещей, как управление сессиями, подписание данных и хэширование паролей. Лучше всего скрывать такие ключи на всякий случай.
Как вы можете видеть из документации здесь: https://docs.gitguardian.com/secrets-detection/detectors/specifics/django_secret_key
Секретный ключ используется для шифрования коммуникации в проекте Django, и, как и любой секретный ключ, используемый в криптографии, секретный ключ, если его раскрыть, может и будет использоваться для взлома любого шифрования в проекте (имейте в виду, даже если вы лично не применяли шифрование, Django использует его во многих местах, таких как пароль, сессии и т.д.).
Поэтому, если ваш ключ открыт, скажем, в исходном коде в публичном репозитории, любой может взломать шифрование и получить данные, на которые он может быть не уполномочен.
Если это просто приложение, запущенное на локальной машине, я не вижу причин скрывать его, просто убедитесь, что пользователь, загружающий ваше репозиторий, знает, что SECRET_KEY является публичным, потому что если этот человек по какой-то причине захочет иметь его в открытом доступе, это будет представлять для него риск. Лучше всего вообще не задавать SECRET_KEY, так что когда пользователь захочет запустить ваше приложение, ему придется задать свой собственный секрет