Как удалить конфиденциальную информацию перед «git push» - PullRequest
0 голосов
/ 07 июня 2019

У моего приложения на python есть ключи базы данных / ключи API в исходном коде.Что-то вроде:

db_key    = XXXXXXXXXXXX
api_token = XXXXXXXXXXXX

...

Я хочу удалить эти ключи автоматически (не весь файл) перед передачей / нажатием на git.Кроме того, я хочу удалить это из моих предыдущих коммитов (уже отправленных на github).Есть ли решения?

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

Хранение учетных данных / конфиденциальной информации в исходном коде - плохая практика. Этого можно избежать, храня их во внешнем месте. В зависимости от требований / уровня безопасности внешнее местоположение может быть:

  • переменная окружения
  • файл конфигурации не сохраняется в системе управления версиями
  • база
  • выделенная система, например Хранилище Хашикорпа

Относительно вашей другой части вопроса - удаления уже введенных учетных данных. Сначала отключите пропущенные учетные данные (их ищут боты, как от Github, так и от злоумышленников).

Когда учетные данные отключены, вам нужно переписать историю. Это можно сделать с помощью git rebase. Обратите внимание, что переписывание публичной истории считается плохой практикой, и ее следует избегать. Я бы предпочел отключить учетные данные и добавить коммиты, которые добавляют модификацию, описанную в первой части ответа.

Автоматическое внесение изменений возможно при использовании зацепки pre-commit на вашей стороне, но это не лучшая идея. После этого изменения git status всегда будет показывать вам, что рабочая область отличается от индекса.

Другой вариант - использовать фильтры, но для меня это звучит как чрезмерная тренировка. Таким образом вы исправите проблему, но не основную причину (хранение учетных данных в виде простого текста в исходном коде).

0 голосов
/ 07 июня 2019

Лучшее решение здесь - поместить ключи в отдельный файл, и все, что вам нужно сделать, это создать .gitignore и поместить этот файл туда. Теперь вы получаете ключи от чтения этого файла.

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

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

...