Как лучше всего обращаться с чувствительными данными при использовании контроля источников? - PullRequest
1 голос
/ 27 октября 2010

Недавно я начал использовать codeplex.com для хостинга проекта, которым я занимаюсь, которым я хочу поделиться с людьми. Я новичок в использовании Source Control и Open Source лечения.

Мое приложение имеет дело с Twitter, и, конечно, я должен использовать ключи API Twitter.

Я использую Visual Studio 2010 и TortoiseHg для управления исходным кодом.

Итак, мой вопрос: как я могу отправить код, не передавая конфиденциальные данные, такие как ключ API? Я должен не делиться этим ключом, верно? API-ключи Twitter, API-ключ TwitPic, API-ключ Plixi ...

Должен ли я каждый раз чистить конфиденциальные данные перед тем, как нажать мой код?

Кроме того, не могли бы вы сказать мне, где я могу узнать лучшие практики по использованию системы контроля версий?

1 Ответ

3 голосов
/ 27 октября 2010

Вы должны вывести всю конфиденциальную информацию в специальный файл свойств.Этот файл должен быть исключен из системы контроля версий.Большинство (если не все) системы контроля версий позволят вам пометить файл как не версионный.Я не знаю конкретно о Hg, но, похоже, .hgignore .

Все системы контроля версий особенно раздражают, когда дело доходит до удаления информации из хранилища.Мы могли почти думать, что они были созданы для записи полной истории проекта ;-) Так что будьте готовы изменить свой ключ API, как только он будет принят по ошибке (не то, чтобы я когда-либо делал что-то подобное).

Редактировать , как мне кажется, не совсем понятно:

Самая важная часть - четко отделить конфиденциальную информацию от стандартной информации.У вас должен быть один файл, который содержит конфиденциальную и только конфиденциальную информацию.Затем пометьте этот файл как «не версионный».Если вы этого не сделаете, вы всегда будете в конечном итоге передать вашу конфиденциальную информацию.И как только они исчезнут, их практически невозможно заставить исчезнуть.

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

...