В Rails 6 вы хотите использовать зашифрованные учетные данные. Запустите rails credentials:edit
. Откроется пустой файл Yaml в любом редакторе, который вы настроили для своей оболочки, например, vi, nano или emacs.
Добавьте свои учетные данные в файл:
google:
client_id: "YOUR CLIENT ID"
client_secret: "YOUR CLIENT ID"
Когда вы сохраните Файл Rails создаст config/credentials.yml.enc
, который зашифрован с помощью /config/master.key
. Этот файл ключа должен находиться в вашем gitignore, в то время как config/credentials.yml.enc
действительно может быть зафиксирован в вашем хранилище.
В вашем config/intializers/omniauth.rb
используйте зашифрованные учетные данные:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2,
Rails.application.credentials.google.fetch(:client_id),
Rails.application.credentials.google.fetch(:client_secret)
end
Почему?
Хотя ENV-переменные менее проблематичны c, чем старый, не столь секретный, открытый текст secrets.yml
, у них действительно есть очень большая проблема. Любой плохо написанный гем в системе может потенциально вывести всю ENV-ха sh, которая даст злоумышленнику все ваши учетные данные, такие как пароль вашей базы данных.
При наличии зашифрованных учетных данных злоумышленнику нужен не только главный ключ, но и доступ к файловой системе, и на этом этапе его игра действительно закончена.