Wie kann ich die Datei vor dem Speichern auf Viren überprüfen?
Ich habe vorher dieses Thema gelesen, aber wie kann ich es programmatisch machen und Ergebnisse für Benutzer zurückgeben?
Der beste Weg, um Probleme mit vom Benutzer hochgeladenen Dateien jeglicher Art zu vermeiden, ist um einen Kommandozeilen-Virenscanner auf dem Server zu haben, mit dem Sie arbeiten Scannen Sie die Dateien nach dem Hochladen. Wenn das Scannerergebnis positiv ist, löschen Sie es die Datei und so weiter
Sehen Sie sich die Sophos API Ссылка
anSAV Dynamic Interface (SAVDI) stellt eine einfach zu integrierende, universell einsetzbare Schnittstelle zur Sophos Detection Engine dar. Es ermöglicht in jeder Sprache geschriebene Programme, Dateien und Daten auf Malware zu prüfen und ist besonders bei ISPs / ASPs beliebt läuft in einer .NET-Umgebung. "
Eine weitere Alternative ist die Verwendung der Klasse Process, um einen Antiviren-Scanner auf dem Server zu starten ( Ссылка ) und zu analysieren Ergebnisse. Beispiel: Hier ist die Liste der Befehlszeilenparameter für AVG: Ссылка .
Übrigens müssen Sie bei der Entwicklung Ihrer Lösung testen, ob Sie eine infizierte Datei identifizieren können. Es wird jedoch nicht empfohlen, eine echte infizierte Datei zu verwenden. Sie können jedoch eine Textdatei mit der folgenden Zeichenfolge erstellen. Diese Zeichenfolge wird von Antivirusscannern häufig als infizierte Datei für Testzwecke identifiziert (für weitere Informationen suchen Sie nach EICAR Standard-Anti-Virus-Testdatei).
* X5O! P% @ AP [4 \ PZX54 (P ^) 7CC) 7} $ EICAR-STANDARD-ANTIVIRUS-TEST-DATEI! $ H + H **
Um Ihnen das Leben zu erleichtern ... sehen Sie sich Metascan Online an. Sie bieten eine kostenlose öffentliche Online-API. In Zukunft könnten Sie auch eine programmgesteuerte Methode für die öffentliche Metascan Online-API einrichten.
%Vor%Dies ist die Engine, die Sie verwenden möchten, wenn Sie Multi-Scanning ernst nehmen. Sie verwenden auch über 40 Engines, um Dateien zu scannen.
Versuchen Sie Online-Ressourcen zu scannen wie virusTotal oder ähnliches. Auch, wie ich weiß, hat Kaspersky einen Online-Scanner, aber es ist vorübergehend nicht verfügbar.
Vom Standpunkt der Anwendung aus können Sie einen Proxy-Server erstellen, auf dem Sie Antivirensoftware installieren, die Datei auf diesen Server hochladen, sie scannen und auf Ihren Zielserver übertragen können
Ich habe versucht, ein sehr ähnliches Problem zu lösen, und habe im Speicher-Scanning nicht viel gefunden. Die meisten Beispiele, die ich gefunden habe, beinhalten das Schreiben der Datei auf die Festplatte und dann das Scannen, indem einige Variablen an einen anderen Prozess übergeben werden, um die Datei auf der Festplatte zu scannen.
In der Lösung, die ich benutzt habe, benutze ich einfach HttpPostedFileBase.InputStream
und sende das an ClamAv um zu scannen. Es gibt nicht viel Code, um es in MVC und seiner QED funktionieren zu lassen.
Sie werden also in Ihrem MVC-Controller so etwas haben:
%Vor%Die Implementierung der VirusScannerFactory kann auf Ihren AV-Anbieter erweitert werden.
%Vor%Ich habe nClam und ClamAv als Beispiel benutzt. Die vollständige ClamAv-Implementierung kann auf github gefunden werden, aber ein Ausschnitt davon, wie Sie es für Speicher-Streams erhalten, ist unterhalb von
%Vor%Ich habe ein Blog-Post mit allen Einzelheiten dazu, wie man dies mit ClamAv macht.
Habe etwas zu diesem Thema recherchiert, hier ist die Zusammenfassung (hauptsächlich für Windows und C #, da ich Windows verwende und Symantec Anti-Virus-Software verwende)
Symantec-Produkt :
a. Systemtec Scan Engine. : Es ist wie ein privater Anti-Virus-Service und es bietet SDK zur Integration in Ihr System.
b. Docscan.exe: Es handelt sich um ein Befehlszeilentool, das ich im System unseres Unternehmens finden kann. Wir können es in unserem Code verwenden, indem wir einen neuen Prozess zum Scannen einer Datei erstellen. Es verwendet den gleichen Scan-Prozess des Symantec-Scanners. Also wird es blockiert wenn die Software lange scannt.
AntiVirusscanner
Diese Bibliothek ist ein Wrapper von Anti-Virus-Softwareprodukten (wie z "Microsoft Security Essentials (Windows Defender)"), die Sie auf Ihrem Windows-Betriebssystem installiert. Da kann ich den Echtzeitscan nicht stoppen von Symantec auf meinem Computer, weiß also nicht, ob es funktioniert. Ich habe festgestellt, dass ein Benutzer gesagt hat, dass es nicht funktioniert, aber ich habe es nicht überprüft.
Windows Defender :
Es ist ein eingebautes Antivirensoftware-Windows-System. Und Es wird gesagt, dass ein Commend-Line-Tool (mpcmdrun.exe), aber ich kann nicht finde es auf meiner Maschine. Und es war deaktiviert, da wir Symantec verwenden. Wenn Sie es haben, können Sie es versuchen.
Open-Source-Antivirus-Produkt
ClamAV ist sehr beliebt. Etwas Produkt integrieren es in ihr System. Und es hat C # API, so kann es wird auch verwendet, um eine private Cloud-Scan-Engine zu erstellen.
Kommerzielle Scan-Engine API öffnen wie: Virustotal und Sophos.
Tags und Links asp.net-mvc-3 file-upload c#-4.0 virus-scanning