2010-02-28 9 views
11

Ok, das ist geradezu bizarr. Ich erstelle eine Webanwendung, die auf einer langen HTTP-Verbindung mit COMET basiert und diese zum Streamen von Daten vom Server zur Anwendung verwendet.Lange gehaltene AJAX-Verbindungen werden von Anti-Virus blockiert

Nun, das Problem ist, dass dies scheint nicht gut mit einigen Antivirenprogrammen zu gehen. Wir sind jetzt in der Betaversion und einige Benutzer haben Probleme mit der Anwendung, wenn der Antivirus aktiviert ist. Es ist nicht nur eine bestimmte Anti-Virus entweder .. Ich fand diese Arbeit für Avast, wenn ich online sah: http://avricot.com/blog/index.php?post/2009/05/20/Comet-and-ajax-with-Avast-s-shield-web-:-The-salvation-or-not

Allerdings hat jemand hier irgendwelche Vorschläge, wie man das behandelt? Soll ich einen bestimmten Header senden, um diese Sicherheitsprogramme zu unterstützen?

Antwort

7

Dies ist eine schwierige Frage. Die Art von Anti-Virus-Funktion, die dies verursacht, versucht zu verhindern, dass bösartiger Code, der im Browser ausgeführt wird, Ihre persönlichen Daten auf einen Remote-Server hochlädt. Um dies zu tun, versucht der Anti-Virus den gesamten ausgehenden Datenverkehr zu puffern, bevor er das Netzwerk erreicht und scannt ihn nach vordefinierten Strings.

Dies funktioniert, wenn die Anwendung eine vollständige HTTP-Anforderung an der Buchse sendet, weil der Anti-Virus, das das Ende des HTTP-Request sieht und weiß, dass es Scannen stoppen kann und die Daten senden.

In Ihrem Fall gibt es wahrscheinlich nur einen Header ohne Längenfeld, so, bis Sie genug Daten senden Anti-Virus-Puffer zu füllen, wird nichts an das Netzwerk geschrieben werden.

Wenn das kein guter Grund ist, diese spezielle Funktion auszuschalten, weiß ich nicht, was ist. Das habe ich mit AVast und McAfee gemacht - an diesem Punkt macht der Rest der Antiviren-Branche wahrscheinlich so etwas. Insbesondere habe ich das mit der McAfee-Funktion zum Schutz personenbezogener Daten gesehen, die, soweit ich feststellen kann, einfach zu fehlerhaft ist.

Wenn Sie können, halten nur Daten über die Steckdose zu senden oder die Daten in HTTP-Nachrichten senden, die ein Längenfeld haben. Ich habe versucht, dies an ein paar Antiviren-Anbieter zu melden - einer von ihnen hat es behoben, der andere hat es nach meinem besten Wissen nicht getan.

Natürlich ist diese Art von Feature völlig nutzlos. Alles, was eine bösartige Anwendung tun müsste, um es zu umgehen, ist es, die Daten vor dem Senden ROT13.

0

Das Problem ist, dass einige Dateien nicht um gescannt werden kann - später Teile sind erforderlich, um festzustellen, ob die früheren Teile schädlich sind.

So haben Scanner ein Problem mit Kanälen, die Daten streamen. Ich bezweifle, dass Ihr Datenstrom als sauberer Dateityp erkannt werden kann. Daher versucht der Scanner, die Daten so gut wie möglich zu scannen, und ich schätze, dass Sie dabei Ihren Stream halten.

Die denken nur ich vorschlagen kann, ist die Datenübertragung in kleinen Transaktionen zu tun, und verwenden Sie die COMET-Verbindung für die Benachrichtigung nur (jeden Kanal nach einer einzigen Anmeldung zu schließen).

0

Wenn Sie einen nicht standardmäßigen Port für Ihre Webanforderungen verwenden, können Sie dies möglicherweise umgehen. Es gibt eine Reihe anderer Probleme, nämlich dass dies von vielen Browsern als domänenübergreifend betrachtet wird. Ich bin mir nicht sicher, ob ich hier einen besseren Vorschlag habe. Es hängt wirklich davon ab, wie das AV-Programm den Verkehr eines bestimmten Ports abfängt.

0

Ich denke, Sie werden gezwungen sein, die Verbindung zu unterbrechen und wieder zu verbinden. Was macht Ihr Code, wenn die Verbindung in einer Ausfallsituation ausfällt? Ich hatte einmal ein ähnliches Problem mit einer Firewall. Der Code musste die Trennung erkennen und dann erneut verbinden. Ich mag die Antwort über den Abbruch der Datenübertragung.

3

Versuchen Sie, https anstelle von http zu verwenden. Es gibt Scanner, die auch https abfangen, aber sie sind weniger verbreitet und die Funktion wurde bei der letzten Überprüfung standardmäßig deaktiviert. Es hat auch die Firefox-SSL-Konnektivität unterbrochen, wenn es aktiviert wurde, also denke ich, dass nur sehr wenige Leute es aktivieren werden und der Verkäufer wird hoffentlich die Funktion beenden.

Verwandte Themen