Долго удерживаемые соединения AJAX блокируются Антивирусом - PullRequest
11 голосов
/ 28 февраля 2010

Хорошо, это совершенно странно. Я создаю веб-приложение, которое опирается на длительное 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

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

Ответы [ 5 ]

7 голосов
/ 15 апреля 2010

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

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

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

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

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

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

3 голосов
/ 18 апреля 2010

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

0 голосов
/ 17 апреля 2010

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

0 голосов
/ 09 марта 2010

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

0 голосов
/ 01 марта 2010

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

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

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

...