Что является хорошей практикой для написания веб-приложений, управляющих демонами (и их конфигурационными файлами) - PullRequest
5 голосов
/ 01 января 2011

Может кто-нибудь посоветовать несколько основных советов по работе с веб-приложениями, которые взаимодействуют с файлами конфигурации, такими как httpd.conf, файлы зон привязки и т. Д.

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

Вы выполняете свой код с полными привилегиями, записываете ли вы будущие переменные в базу данных и выполняете ли задание cron (с полными привилегиями) сценарий, который извлекает переменные из базы данных и выбрасывает их в файл конфигурации шаблона и т.д.

Буду признателен за некоторые мысли и комментарии по этому вопросу.

tl; dr - как вы можете безопасно написать веб-приложение для обновления / создания записей в файле конфигурации, таких как httpd.conf apache и т. Д.

Ответы [ 2 ]

1 голос
/ 01 января 2011

Я не гуру безопасности Unix, но подумайте о некоторых основных вещах:

  • Убедитесь, что ваше веб-приложение работает от имени определенного пользователя, и убедитесь, что пользователь имеет привилегированные права.права только на те файлы, которые предполагается изменить.

  • Не разрешать добавление произвольных входных данных в файлы, имеют строгие формы, где проверяется каждое полесодержать только то, что должно содержать, например, az и 0-9 и т. д.

  • Используйте HTTPS для доступа к сайту.

IЯ уверен, что от настоящих гуру еще многое получится.

0 голосов
/ 01 января 2011

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

True.

Но, скажем, вам поручено написать небольшое приложение, позволяющее добавлять vhosts в конфигурацию apache.

Не имеет отношения к первому пункту. Совершенно не связаны. В самом деле, почему первый пункт даже там?

Добавление vhosts - это простой скрипт. Вы просто пишете сценарий и заставляете его работать. Это требует чрезвычайных привилегий. Но это не «произвольное выполнение кода». И это будет «полностью подтверждено» (что бы это ни значило. Вы пишете это. Вы подтверждаете это.)

Это не хороший выбор для "веб-приложения". И это не хороший выбор для демона. Действительно, очень трудно увидеть связь между «добавлением vhosts в конфигурацию apache» и «веб-приложениями, управляющими демонами».

Это просто скрипт, который просто обновляет файл. Ничего особенного. Это требует привилегий, так что только несколько человек могут запустить его. Ничего особенного там тоже нет. Используйте sudo.

Ваш код выполняется с полными привилегиями,

Очевидно. Скрипт не может обновить vhosts без каких-либо привилегий.

Если под "вашим кодом" вы не подразумеваете скрипт, который обновляет vhosts. Если вы имеете в виду что-то еще, например, веб-страницу, которая позволяет кому-то писать скрипт, который обновляет vhosts. В этом случае вы связали скрипт с веб-приложением, которое запускает скрипт.

записываете ли вы будущие переменные в базу данных и выполняете ли задание cron (с полными привилегиями) сценарий, который извлекает переменные из базы данных и добавляет их в файл конфигурации шаблона и т. Д.

Конечно. Люди делают это. Это кажется ужасно сложным.

Используйте celery вместо использования собственного фонового процессора. http://ask.github.com/celery/getting-started/introduction.html

...