Я использую Pelican для настройки блога.При запуске сервера разработки я получаю предупреждение:
Хотите ли вы, чтобы приложение «Python.app» принимало входящие сетевые подключения?Нажатие Deny может ограничить поведение приложения.Этот параметр можно изменить на панели «Брандмауэр» в настройках «Безопасность и конфиденциальность».
Я уверен, что видел это предупреждение раньше (Джанго?) И просто рассеянно принял его.Однако я пытался выяснить, что это на самом деле означает, что привело меня к кроличьей норе сетевого программирования.
Я выяснил, что Pelican по умолчанию привязывает свой сокет сервера с помощью INADDR_ANY, что привело меня кпара вопросов:
- Есть ли какая-либо польза от связывания с INADDR_ANY, а не с INADDR_LOOPBACK?
- Стандартный способ подключения к серверу разработчика - localhost: 8000.Есть ли случаи, когда нельзя просто использовать localhost?
- Есть ли риск, связанный с использованием INADDR_ANY?
- Я предполагаю, что есть некоторый риск или другой связанный с использованием INADDR_ANY, иначе предупреждение не появилось бы.Я предполагаю, что кто-то теоретически мог бы отправлять HTTP-запросы в мой сокет и связываться, ну, в общем, с тем, что мой обработчик HTTP позволил бы им?
Буду признателен, если какие-либо ответы предоставят основныеопределения терминов / концепций сетевого программирования, если это целесообразно.Мое знание предмета ограничено учебой в выходные дни.
ОБНОВЛЕНИЕ
Ответ Реми лаконичен и кажется точным.Но, хотя он объясняет концепции, он не затрагивает непосредственно некоторые из моих вопросов.Я немного поясню, если кто-нибудь еще увидит это:
Привязка к INADDR_ANY (0.0.0.0), которую я обнаружил, также является значением по умолчанию для Python http.server .По-видимому, это приводит к меньшему количеству жалоб от людей, которые ничего не знают о работе в сети (например, я), по мнению основного Pylons участника.Такие вещи, как виртуальные машины, упоминаются как источник разочарования.
Единственный непосредственный риск, связанный с привязкой к INADDR_ANY, заключается в том, что кто-то еще в вашей локальной сети может потенциально подключиться к вашему серверу разработки.Но до тех пор, пока вы не поделитесь доступом к Интернету с вашим заклятым врагом, у вас все в порядке.Единственный риск от внешних источников (за пределами вашей локальной сети) возникнет, если вы явно разрешите это через настройку соответствующей переадресации портов.