Настройка простого БЕЗОПАСНОГО http-сервера в Python3

Я хочу установить очень простой http-сервер, который заменяет несколько ключевых слов в одном HTML -файле и отправляет его в repspond для запроса клиентам. Http.server Python выглядит хорошо для меня, но в документации я нашел:

Предупреждение http.server не рекомендуется для производства. Он реализует только базовые проверки безопасности.

и в исходном коде:

ПРЕДУПРЕЖДЕНИЕ О БЕЗОПАСНОСТИ: НЕ ИСПОЛЬЗУЙТЕ ЭТОТ КОД, ЕСЛИ ВЫ НЕ ВНУТРИ ФАЙРУНА - он может выполнять произвольный код Python или внешние программы.

Знаете ли вы, как создать безопасный http-сервер, чьи порты могут быть предисловием через брандмауэр к Интернету?

1 ответ

Если это веб-приложение Python, есть несколько вариантов, доступных для HTTP-серверов в Python. Среди безопасных - Gunicorn, Nginx WSGI, mod_wsgi. Список доступен здесь. Я возьму mod_wsgi в качестве примера. Официальная документация гласит, что существует два способа установки этого пакета, и оба безопасны для производственных развертываний:

Пакет может быть установлен двумя различными способами в зависимости от ваших требований. Первый - это традиционный модуль Apache, установленный в существующую установку Apache. Второй способ установки mod_wsgi - установить его из PyPi с помощью команды Python pip. Это создает и устанавливает mod_wsgi в вашу установку Python или виртуальную среду. Оба типа установки подходят для производственных развертываний.

Согласно документации, лучшим вариантом является использование: Apache + mod_wsgi + docker.

Для mod_wsgi вам необходимо настроить Apache 2.4, и поддерживаются оба Python 2 и 3. Требования изложены здесь.

Веб-сервер Apache широко используется в производственных приложениях. Проект Apache HTTP Server является одним из старейших и поддерживается в течение 20 лет. Вы можете прочитать больше об этом здесь. Что касается обеспечения безопасности, вы должны прочитать этот ответ.

Другие вопросы по тегам