Используя localhost коммуникацию TCP/IP в программе - всегда безопасный?

У меня есть приложение, которое разделено на несколько частей (процессы), связывающиеся по TCP/IP, с помощью предопределенного порта на localhost.

Это всегда безопасно? Может некоторый брандмауэр (корпоративный, локально установленный, брандмауэр Windows, и т.д.) блокируют этот трафик? Или могут некоторые пользовательские настройки в ОС блокировать этот трафик?

Ose, которыми я интересуюсь, являются Windows (XP до 7) и Linux (Ubuntu, Red Hat Linux и SUSE).

4
задан 07.04.2019, 00:13

2 ответа

  • Трафик к 127.0.0.0/8 и к ::1/128 обрабатывается внутренне стеком TCP/IP. Это не достигает карты физической сети и никогда не оставляет компьютер, таким образом, это не может быть заблокировано корпоративными брандмауэрами.

  • Так как петлевые сокеты очень характерны для IPC, хорошие брандмауэры никогда не должны блокировать его. (Windows Firewall не делает.) Однако существуют некоторые чрезмерно параноидальные... В таких случаях, тем не менее, я обвинил бы брандмауэр, не Ваше программное обеспечение.

  • На Unix возможно (accidentially) снизить петлевой интерфейс (обычно lo). Снова, это очень необычно.

  • Вместо hardcoded порта, socketpair() должен использоваться, когда применимо, для предотвращения коллизий порта.

  • Еще лучше должен был бы использовать сокеты Unix на Linux и именованные каналы в Windows.

8
ответ дан 07.12.2019, 19:24

Все эти Ose поддержка под управлением программное обеспечение брандмауэра. Они могли заблокировать localhost соединения, хотя это не очень обычно (по моему опыту).

Существует много приложений/сервисов, которые делают это. Просто попытайтесь работать netstat -an на Вашем поле: возможности - Вы, будет видеть довольно много приложений с открытыми сокетами слушания на 127.0.0.1.

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

2
ответ дан 07.12.2019, 19:24

Теги

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