长时间持有的AJAX连接被Anti-Virus阻止

时间:2010-02-28 16:57:12

标签: javascript ajax http comet antivirus

好的,这是彻头彻尾的奇怪。我正在构建一个Web应用程序,它依赖于使用COMET的长期HTTP连接,并使用它来将数据从服务器传输到应用程序。

现在,问题是这对某些反病毒程序似乎不太顺利。我们现在处于测试阶段,一些用户在启用防病毒时遇到应用程序问题。它不仅仅是一种特定的反病毒..当我在网上看时,我发现Avast的这个工作:http://avricot.com/blog/index.php?post/2009/05/20/Comet-and-ajax-with-Avast-s-shield-web-:-The-salvation-or-not

但是,这里有人对如何处理这个有任何建议吗?我应该发送任何特定的标题来取悦这些安全程序吗?

5 个答案:

答案 0 :(得分:7)

这是一个艰难的。导致此尝试的防病毒功能会阻止在浏览器中运行的恶意代码将您的个人数据上传到远程服务器。为此,防病毒尝试在所有传出流量到达网络之前缓冲它们,并扫描它以寻找预定义的字符串。

当应用程序在套接字上发送完整的HTTP请求时,这会起作用,因为防病毒会看到HTTP请求的结束并知道它可以停止扫描并发送数据。

在你的情况下,可能只有一个没有长度字段的标题,所以在你发送足够的数据来填充反病毒的缓冲区之前,什么都不会被写入网络。

如果这不是关闭特定功能的好理由,我不知道是什么。我与AVast和McAfee碰到了这个问题 - 此时,反病毒行业的其他部门可能正在做类似的事情。具体来说,我使用McAfee的个人信息保护功能遇到了这个问题,据我所知,这个功能太麻烦了。

如果可以,只需继续在套接字上发送数据,或者在具有长度字段的HTTP消息中发送数据。我尝试向几个反病毒软件供应商报告 - 其中一个修复了它,另一个没有,据我所知。

当然,这种功能完全没用。所有恶意应用程序需要做的就是在发送数据之前将数据转换为ROT13。

答案 1 :(得分:3)

尝试使用https而不是http。有些扫描仪也可以拦截https,但它们不太常见,而且我上次检查时功能默认为关闭。它在激活时也破坏了Firefox SSL连接,因此我认为很少有人会激活它,供应商希望能够杀死该功能。

答案 2 :(得分:0)

问题是无法按顺序扫描某些文件 - 需要以后的部分来确定早期部分是否是恶意的。

因此,扫描程序的流数据通道存在问题。我怀疑您的数据流是否能够被识别为干净的文件类型,因此扫描程序正在尝试尽可能地扫描数据,我想在此过程中会阻止您的数据流。

我唯一的想法是在小事务中进行数据传输,并使用COMET连接仅用于通知(在单个通知后关闭每个通道)。

答案 3 :(得分:0)

如果您的Web请求使用非标准端口,您可以解决此问题,还有许多其他问题,即许多浏览器将其视为跨域。不确定我是否有更好的建议在这里提供。这实际上取决于AV程序如何拦截给定端口的流量。

答案 4 :(得分:0)

我认为你将被迫打破连接并重新连接。如果在中断情况下连接断开,您的代码会怎么做?我曾经遇到类似的防火墙问题。代码必须检测断开连接,然后重新连接。我喜欢破解数据传输的答案。