11

好吧,这太奇怪了。我正在构建一个 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

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

4

5 回答 5

7

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

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

在您的情况下,可能只有一个没有长度字段的标头,因此在您发送足够的数据以填充防病毒缓冲区之前,不会将任何内容写入网络。

如果这不是关闭该特定功能的好理由,我不知道是什么。我在使用 AVast 和 McAfee 时遇到了这个问题——在这一点上,反病毒行业的其他公司可能正在做类似的事情。具体来说,我使用 McAfee 的个人信息保护功能遇到了这个问题,据我所知,这个功能实在是太麻烦了,无法使用。

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

当然,这种功能是完全没用的。要绕过它,恶意应用程序需要做的就是在发送数据之前对数据进行 ROT13。

于 2010-04-15T05:48:41.093 回答
3

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

于 2010-04-17T23:18:25.507 回答
0

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

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

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

于 2010-02-28T21:13:17.160 回答
0

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

于 2010-03-08T23:59:44.140 回答
0

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

于 2010-04-17T09:08:46.643 回答