Как Вы Защищаете database.yml?

Обработка отмены регистрации делегата в веб-представлении и остановка веб-просмотра от загрузки лучше всего обрабатывается с помощью метода dealloc в ViewController.

В качестве примера того, когда viewWillDisappear может перестать работать: если ViewController является дочерним по отношению к другому ViewController, вы можете инициировать удаление представления ViewController из представления родительского ViewController с анимацией. В то же время вы можете удалить ViewController из его родителя и удалить его ссылку. В этот момент ViewController будет иметь значение nil, и viewWillDisappear никогда не будет вызываться, то есть делегат WebView никогда не будет очищен.

Используйте dealloc и убедитесь, что ваш WebView всегда очищен.

50
задан John Topley 20 August 2008 в 05:12
поделиться

3 ответа

Даже если вы защитите файл database.yml, люди все равно могут писать, используя те же учетные данные, если они могут изменить код вашего приложения.

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

3
ответ дан 7 November 2019 в 11:05
поделиться

Я решил эту проблему, поместив пароль базы данных в файл с разрешениями на чтение только для пользователя, от имени которого я запускаю свое приложение. Затем в database.yml я использую ERB для чтения файла:

production:
  adapter: mysql
  database: my_db
  username: db_user
  password: <%= begin IO.read("/home/my_deploy_user/.db") rescue "" end %>

Работает отлично.

39
ответ дан 7 November 2019 в 11:05
поделиться

Посмотрите на это решение на github: https://github.com/NUBIC/bcdatabase. bcdatabase предоставляет зашифрованное хранилище, где пароли могут храниться отдельно от yaml-файлов.

bcdatabase

bcdatabase - это библиотека и утилита. которая обеспечивает конфигурацию базы данных управление параметрами для Ruby on Rails приложений. Она предоставляет простой механизм для разделения базы данных атрибуты конфигурации от исходного кода приложения, чтобы нет соблазна проверить пароли в системе контроля версий систему. И она централизует параметры для одного сервера, чтобы они могут быть легко распределены между несколькими приложениями и легко обновляться одним администратором.

10
ответ дан 7 November 2019 в 11:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: