Подтвердить что ты не робот

Длинные соединения AJAX блокируются Антивирусом

Хорошо, это совершенно странно. Я создаю веб-приложение, основанное на длительном HTTP-соединении с использованием COMET, и используя это для потоковой передачи данных с сервера на приложение.

Теперь проблема в том, что это не похоже на некоторые антивирусные программы. Сейчас мы находимся в стадии бета-тестирования, и некоторые пользователи сталкиваются с проблемами с приложением, когда антивирус включен. Это не только один конкретный антивирус. Я нашел эту работу для Avast, когда я посмотрел онлайн: http://avricot.com/blog/index.php?post/2009/05/20/Comet-and-ajax-with-Avast-s-shield-web-:-The-salvation-or-not

Однако, у кого-нибудь есть какие-либо предложения по тому, как это сделать? Должен ли я отправлять какой-либо конкретный заголовок, чтобы понравиться этим программам безопасности?

4b9b3361

Ответ 1

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

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

В вашем случае, вероятно, есть только заголовок без поля длины, поэтому пока вы не отправите достаточно данных для заполнения антивирусного буфера, в сеть ничего не будет записано.

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

Если вы можете, просто продолжайте отправлять данные в сокете или отправлять данные в сообщениях HTTP с полем длины. Я попробовал сообщить об этом нескольким антивирусным вендорам - один из них исправил это, а другой, насколько мне известно, не сделал этого.

Конечно, такая функция абсолютно бесполезна. Все вредоносное приложение должно будет сделать, чтобы обойти это, чтобы ROT13 данные перед его отправкой.

Ответ 2

Попробуйте использовать https вместо http. Есть сканеры, которые также перехватывают https, но они менее распространены, и функция по умолчанию отключена в последний раз, когда я проверил. Он также нарушил подключение Firefox SSL при активации, поэтому я думаю, что очень немногие люди активируют его, и продавец, мы надеемся, убьет эту функцию.

Ответ 3

Проблема в том, что некоторые файлы не могут быть отсканированы по порядку - более поздние части необходимы для определения того, являются ли ранние части злонамеренными.

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

Единственное, что я могу предложить, это сделать передачу данных в небольших транзакциях и использовать соединение COMET только для уведомления (закрытие каждого канала после одного уведомления).

Ответ 4

Если вы используете нестандартный порт для своих веб-запросов, вы можете обойти это, есть ряд других проблем, а именно, что это будет считаться междоменным для многих браузеров. Не уверен, что у меня есть лучшее предложение предложить здесь. Это действительно зависит от того, как AV-программа перехватывает данный порт.

Ответ 5

Я думаю, вам придется сломать соединение и снова подключиться. Что делает ваш код, если соединение опускается в ситуации сбоя? У меня была аналогичная проблема с брандмауэром один раз. Код должен был обнаружить разъединение, а затем снова подключиться. Мне нравится ответ о разрыве передачи данных.