Моя команда построила портал интрасети в Amazon AWS для клиента, и на нем мы использовали WebSockets для таких вещей, как уведомления и другие мелочи. В основном мы отправляем события с сервера, но мы также используем его, чтобы клиент мог быстро уведомить сервер о присутствии пользователя.
Одно из требований клиента заключалось в том, чтобы мы использовали брандмауэр на уровне приложения, чтобы отсеивать вредоносные запросы и тому подобное. Для этого мы установили Sophos UTM. Для HTTP-трафика это отлично работает. Однако UTM не поддерживает WebSockets, и поэтому нам в основном пришлось настроить его так, чтобы запросы прокси проходили вслепую. По причинам, которые я не совсем понимаю (даже после нескольких часов отладки), это было огромным узким местом, и все замедлялось (даже несмотря на то, что использование процессора и памяти было в порядке).
Затем мы решили, что если UTM все равно не фильтрует трафик, давайте добавим nginx, чтобы разделить трафик сокетов, и позволить UTM обрабатывать обычный трафик. Эта установка работает очень хорошо, а производительность фантастическая.
Однако охранник клиента обеспокоен тем, что трафик WebSocket не проверяется.
Таким образом, у меня есть три связанных вопроса:
Это беспокоит? Если нет, могу ли я показать что-нибудь, что объяснит это лучше, чем я?
Если это вызывает беспокойство, могут ли нам помочь брандмауэры приложений? Я действительно не знаю, против чего мы будем фильтровать, но, надеюсь, это работа брандмауэра.
РЕДАКТИРОВАТЬ: Я был неправ, мы фактически осуществляем двунаправленную связь по сокетам, хотя это все еще довольно тривиально. Это такие вещи, как "просматривает ли пользователь эту вкладку", "подтвердил ли пользователь получение уведомления" и т. Д.