2010-02-28 12 views
11

Ok, esto es francamente extraño. Estoy construyendo una aplicación web que depende de la conexión HTTP largamente mantenida usando COMET y usándola para transmitir datos desde el servidor a la aplicación.Conexiones AJAX de larga duración bloqueadas por el Anti-Virus

Ahora, el problema es que esto no parece ir bien con algunos programas antivirus. Ahora estamos en versión beta y algunos usuarios tienen problemas con la aplicación cuando el antivirus está habilitado. No es solo un antivirus específico. Encontré este trabajo para Avast cuando miré en línea: http://avricot.com/blog/index.php?post/2009/05/20/Comet-and-ajax-with-Avast-s-shield-web-:-The-salvation-or-not

Sin embargo, ¿alguien aquí tiene alguna sugerencia sobre cómo manejar esto? ¿Debo enviar un encabezado específico para complacer a estos programas de seguridad?

Respuesta

7

Esta es una pregunta difícil. El tipo de característica antivirus que causa esto intenta evitar que el código malicioso que se está ejecutando en el navegador cargue sus datos personales en un servidor remoto. Para hacer eso, el antivirus intenta almacenar todo el tráfico saliente antes de que llegue a la red, y escanearlo para cadenas predefinidas.

Esto funciona cuando la aplicación envía una solicitud HTTP completa en el socket, porque el antivirus ve el final de la solicitud HTTP y sabe que puede detener el escaneo y enviar los datos.

En su caso, probablemente solo haya un encabezado sin un campo de longitud, por lo tanto, hasta que envíe suficientes datos para llenar el búfer del antivirus, no se escribirá nada en la red.

Si esa no es una buena razón para desactivar esa función en particular, no sé lo que es. Me encontré con esto con AVast y McAfee: en este punto, el resto de la industria antivirus probablemente esté haciendo algo así. Específicamente, me encontré con esto con la característica de protección de información personal de McAfee, que hasta donde yo sé, es demasiado complicado de usar.

Si puede, siga enviando datos en el socket, o envíe los datos en mensajes HTTP que tengan un campo de longitud. Traté de informar esto a un par de proveedores de antivirus, uno de ellos lo solucionó y el otro no, según mi leal saber y entender.

Por supuesto, este tipo de característica es completamente inútil. Todo lo que una aplicación maliciosa debería hacer para evitarlo es ROT13 la información antes de enviarla.

0

El problema es que algunos archivos no pueden escanearse en orden; luego se requieren partes para determinar si las partes anteriores son maliciosas.

Por lo que los escáneres tienen un problema con los canales que transmiten datos. Dudo que su flujo de datos pueda ser reconocido como un tipo de archivo limpio, por lo que el escáner está intentando escanear los datos lo mejor que pueda, y supongo que retrasará la transmisión en el proceso.

Lo único que puedo sugerir es hacer la transferencia de datos en pequeñas transacciones, y usar la conexión COMET solo para notificaciones (cerrando cada canal después de una sola notificación).

0

Si utiliza un puerto no estándar para sus solicitudes web, es posible que pueda solucionar este problema, hay una serie de otros problemas, a saber, que muchos navegadores considerarán que se trata de dominios cruzados. No estoy seguro si tengo una mejor sugerencia para ofrecer aquí. Realmente depende de cómo el programa AV intercepta el tráfico de un puerto determinado.

0

Creo que se verán obligados a desconectar la conexión y volver a conectarse. ¿Qué hace tu código si la conexión se cae en una situación de corte? Tuve un problema similar con un firewall una vez. El código tenía que detectar la desconexión, luego reconectarse. Me gusta la respuesta sobre romper la transferencia de datos.

3

Intente utilizar https en lugar de http. También hay escáneres que interceptan https, pero son menos comunes y la función predeterminada fue la última vez que lo revisé. También rompió la conectividad SSL de Firefox cuando se activó, por lo que creo que muy pocas personas lo activarán y es de esperar que el proveedor elimine la función.

Cuestiones relacionadas