Позвольте php и сценарий Python с апачем, но все еще имейте защищенный сервер

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

Поскольку Вы используете mpm-предварительное-ветвление, смело можно сказать, nginx использует значительно меньше памяти, когда будет несколько параллельных передач. Параллельные передачи накапливаются легко, если у Вас есть большие файлы, или у Ваших клиентов есть медленные соединения с интернетом. Nginx без труда победит, когда у Вас будет достаточно параллельных передач для Apache для съедения всей памяти.

Можно утверждать, что это не действительно проблема, пока существует достаточно памяти для Apache. Однако это не целая истина. Когда меньше памяти будет использовано http сервером, больше содержания от файловой системы будет кэшироваться, и каждый устраненный поиск на диске будет маленькой победой производительности.

0
задан 19 April 2011 в 12:11
2 ответа

Хорошо; я не эксперт по этому, но замечаю что Ваш вопрос:

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

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

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

Я настоятельно рекомендовал бы писать в другое местоположение, чем/var/www, например,/tmp. Вы, возможно, должны были бы ограничить размер записанных файлов? Обязательно только считайте (и запись) байты, которые Вы загружаете и не пытаетесь выполнить что-либо ее.

0
ответ дан 5 December 2019 в 17:09

Ключ должен санировать ввод данных пользователем - нет потребности сделать любое специальное конфигурирование кроме создания исполняемого файла сценариев. Пользователь может только выполнить действия, которые выполняет Ваш код, и Вы управляете точно, что делает Ваш код. Нет никакой серебряной пули к удостоверяющейся безопасности. Существует несколько очень важных вещей высматривать:

  • Абсолютно убедитесь, что у пользователя нет способа влиять на пути сценариев/файлов, выполнялся/читал. Например, f=open("/tmp/myfiles/"+some_path_from_user,"w") было бы ОЧЕНЬ ПЛОХО и позволил бы пользователю писать любой файл, который он хотел к (что у апача есть полномочия для),

  • Это применяется дважды при выполнении сценариев. Все пути к сценариям должны быть предопределены, если возможный и пользователь не должен мочь изменить эти сценарии.

  • Разделите свои сценарии из Ваших других файлов.

  • Используйте принцип наименьшего количества полномочия при установке полномочий на файлах/сценариях.

0
ответ дан 5 December 2019 в 17:09

Теги

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