Проблемы безопасности при сохранении конфигурационного файла в json / CPickle - PullRequest
0 голосов
/ 05 марта 2012

Я попытался выяснить это, самое безопасное и гибкое решение для хранения в конфигурационном файле некоторых учетных данных для подключения к базе данных и другой частной информации.Это внутри модуля python для входа в различные обработчики (mongodb, mysqldb, файлы и т. Д.) Истории активности пользователей в системе.

Этот модуль регистрации подключен с обработчиком и находится там, где мне нужно загрузить файл конфигурации для каждого обработчика.База данных IE, пользователь, пароль, таблица и т. Д.

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

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

Что бы вы посоветовали для такого рода проблем безопасности при хранении этого вида конфигурационных файлов на сервере и доступ к ним из некоторого класса Python?Заранее спасибо, Лучукс.

1 Ответ

0 голосов
/ 05 марта 2012

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

(Естественно, вы также должны попытаться защитить сервер, чтобы ваши учетные данные не могли быть просто получены с помощью http-запроса)

...