2013-07-20 5 views
8

में वायरस के लिए अपलोड फ़ाइल की जांच करें मैं स्टोर करने से पहले वायरस के लिए अपलोड फ़ाइल कैसे देख सकता हूं?एमवीसी 3

मैंने पहले इस विषय को पढ़ा था, लेकिन मैं इसे प्रोग्राममैटिक कैसे कर सकता हूं और उपयोगकर्ता के लिए परिणाम कैसे लौटा सकता हूं?

सबसे अच्छा तरीका है किसी भी तरह के उपयोगकर्ता अपलोड की गई फ़ाइलों के साथ समस्याओं से बचने के लिए सर्वर पर एक कमांड लाइन वायरस स्कैनर, जो आप अपलोड करने के बाद फ़ाइलें स्कैन करने के लिए उपयोग करने के लिए है। यदि स्कैनर परिणाम सकारात्मक है, फ़ाइल और

+0

हाय, मैं सोच रहा था अगर आप साझा कर सकता है कि कैसे आप इस काम के पाने में कामयाब रहे, और जो समाधान आप सबसे अच्छा उपयोग करने के लिए मिल गया? –

+1

आप IAttachmentExecute API का उपयोग कर सकते हैं। [यह उत्तर आप मदद कर सकते हैं] (http://stackoverflow.com/a/35684198/1442180) – Fred

+0

आप IAttachmentExecute API का उपयोग कर सकते हैं। [यह उत्तर आप मदद कर सकते हैं] (http: // stackoverflow।कॉम/ए/35684198/1442180) – Fred

उत्तर

7

पर तो हटाना Sophos एपीआई पर एक नजर डालें https://secure.sophos.com/partners/oem/integration/savdi.html

"SAV गतिशील इंटरफेस (SAVDI) एक आसान करने के लिए एकीकृत, सामान्य उद्देश्य इंटरफेस प्रदान करता है सोफोस डिटेक्शन इंजन के लिए। यह मैलवेयर के लिए फ़ाइलों और डेटा को स्कैन करने के लिए किसी भी भाषा में लिखे गए कार्यक्रमों को सक्षम बनाता है और विशेष रूप से एक .NET पर्यावरण में चल रहे आईएसपी/एएसपी के साथ लोकप्रिय है। "

सर्वर पर एंटी-वायरस स्कैनर शुरू करने के लिए प्रक्रिया वर्ग का उपयोग करना एक और विकल्प है (http://www.dotnetperls.com/process-start) और इसके परिणाम पार्स करें। उदाहरण के लिए, AVG: http://www.avg.com/ww-en/faq.num-3604 के लिए कमांड लाइन पैरामीटर की सूची यहां दी गई है।

वैसे, जैसे ही आप अपना समाधान विकसित करते हैं, आपको परीक्षण करने की आवश्यकता होगी कि क्या आप संक्रमित फ़ाइल की पहचान कर सकते हैं। लेकिन वास्तविक संक्रमित फ़ाइल का उपयोग करने की अनुशंसा नहीं की जाती है। हालांकि, आप नीचे स्ट्रिंग के साथ एक टेक्स्ट फ़ाइल बना सकते हैं। यह स्ट्रिंग आमतौर पर एंटी-वायरस स्कैनर द्वारा परीक्षण उद्देश्यों के लिए एक संक्रमित फ़ाइल के रूप में पहचाना जाता है (अधिक जानकारी के लिए, ईआईसीएआर मानक एंटी-वायरस टेस्ट फ़ाइल की खोज करें)।

* X5O! पी% @ एपी [4 \ PZX54 (पी ^) 7CC) 7} $ EICAR-मानक-एंटीवायरस-परीक्षा-फ़ाइल! $ एच + एच **

2

तरह स्कैन करने के लिए ऑनलाइन संसाधनों की कोशिश वायरस कुल या समान। जैसा कि मुझे पता है कि कास्पर्स्की के पास ऑनलाइन स्कैनर है, लेकिन यह अस्थायी अनुपलब्ध है।

देखने के आवेदन बिंदु आप किसी प्रॉक्सी सर्वर जहां एंटीवायरस सॉफ्टवेयर स्थापित कर सकते हैं, इस सर्वर से फाइल अपलोड करें, इसे स्कैन और अपने गंतव्य सर्वर

+1

यदि आप ऐसा करते हैं तो साइट के TOS को जांचना सुनिश्चित करें, ऐसा लगता है कि वे इस तरह के उपयोग की अनुमति नहीं देते हैं (कम से कम मुफ्त में नहीं, उनके पास एक वाणिज्यिक सेवा हो सकती है जिसके लिए आप भुगतान कर सकते हैं) –

+0

यह एक अच्छा विकल्प है, लेकिन फ़ाइलों को स्कैन करने में कई घंटे लगते हैं, यह वेबसाइट सबमिट किए गए फॉर्म में कम प्रभावी है ... –

3

को स्थानांतरित अपने जीवन को आसान बनाने के बना सकते हैं से ... बस मेटास्कैन ऑनलाइन देखें। वे एक ऑनलाइन मुफ्त सार्वजनिक एपीआई प्रदान करते हैं। भविष्य में, आप मेटास्कैन ऑनलाइन सार्वजनिक एपीआई के साथ प्रोग्रामेटिक रूप से ऐसा करने का एक तरीका भी स्थापित कर सकते हैं।

Sample Code(PHP) 

     // Config. 
     $api = 'https://api.metascan-online.com/v1/file'; 
     $apikey = 'E1D7-DG5E-4FE0-BFAE'; 
     $file = 'test.txt'; 

     // Build headers array. 
     $headers = array(
    'apikey: '.$apikey, 
    'filename: '.basename($file) 
    ); 

     // Build options array. 
     $options = array(
    CURLOPT_URL  => $api, 
    CURLOPT_HTTPHEADER => $headers, 
    CURLOPT_POST  => true, 
    CURLOPT_POSTFIELDS => file_get_contents($file), 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_SSL_VERIFYPEER => false 
    ); 

     // Init & execute API call. 
     $ch = curl_init(); 
     curl_setopt_array($ch, $options); 
     $response = json_decode(curl_exec($ch), true); 

     print_r($response); 

इस इंजन का उपयोग करना यदि आप बहु -scanning बारे में गंभीर हैं चाहते हैं। वे फ़ाइलों को स्कैन करने के लिए 40 से अधिक इंजनों का भी उपयोग करते हैं।

1

मैं एक बहुत ही समान समस्या को हल करने के लिए देख रहा था, और स्मृति स्कैनिंग में बहुत कुछ नहीं मिला। अधिकांश उदाहरणों में मुझे डिस्क पर फ़ाइल लिखना शामिल है, और फिर डिस्क पर फ़ाइल को स्कैन करने के लिए किसी अन्य प्रक्रिया में कुछ चर पारित करके स्कैनिंग शामिल है।

तो मैंने जिस समाधान में उपयोग किया है, मैं केवल HttpPostedFileBase.InputStream का उपयोग करता हूं, और इसे स्कैमएव को स्कैन करने के लिए भेजता हूं। एमवीसी और उसके क्यूईडी में काम करने के लिए बहुत कुछ कोड नहीं है।

/// Main controller 
public class HomeController : Controller { 

    /// Get the upload view 
    [HttpGet] 
    public ActionResult Index() { 
     return View(); 
    } 

    /// Handle the file upload 
    [HttpPost] 
    public ActionResult Index(UploadViewModel model, HttpPostedFileBase file) { 
     var scanner = VirusScannerFactory.GetVirusScanner(); 
     var result = scanner.ScanStream(file.InputStream); 

     if(result.IsVirusFree) { 
      // save to disk 
     } else { 
      // don't save to disk and tell user they uploaded a virus 
     } 

     return View(model); 
    } 
} 

VirusScannerFactory का कार्यान्वयन अपने ए वी विक्रेता सूट करने के लिए बढ़ाया जा सकता है:

तो अपने MVC नियंत्रक में, आप कुछ इस तरह होगा।

public class VirusScannerFactory { 
    public static IScanViruses GetVirusScanner() { 
     //Currently we only have one Antivirus implementation, 
     //but later we want to include AVG, SOPHOS and metascan 
     return new ClamAvScanner(); 
    } 
} 

public interface IScanViruses { 

    ScanResult ScanFile(string fullPath); 

    ScanResult ScanBytes(byte[] bytes); 

    ScanResult ScanStream(Stream stream); 
} 

मैंने उदाहरण के रूप में nClam और ClamAv का उपयोग किया है। पूर्ण ClamAV कार्यान्वयन found on github हो सकता है, लेकिन आप इसे स्मृति के लिए काम धाराओं कैसे मिल का एक टुकड़ा

नीचे
public class ClamAvScanner : IScanViruses{ 
    ... snip ... 
    /// Scans your data stream for virus 
    public ScanResult ScanStream(Stream stream) { 
     var clam = new ClamClient("localhost", 3310); 
     return MapScanResult(clam.SendAndScanFile(stream)); 
    } 
    ...snip ... 
    /// helper method to map scan result 
    private ScanResult MapScanResult(ClamScanResult scanResult) { 
     var result = new ScanResult(); 
     switch (scanResult.Result) { 
      case ClamScanResults.Unknown: 
       result.Message = "Could not scan file"; 
       result.IsVirusFree = false; 
      break; 
      case ClamScanResults.Clean: 
       result.Message = "No Virus found"; 
       result.IsVirusFree = true; 
       break; 
      case ClamScanResults.VirusDetected: 
       result.Message = "Virus found: " + scanResult.InfectedFiles.First().VirusName; 
       result.IsVirusFree = false; 
       break; 
      case ClamScanResults.Error: 
       result.Message = string.Format("VIRUS SCAN ERROR! {0}", scanResult.RawResult); 
       result.IsVirusFree = false; 
       break; 
      } 
     return result; 
    } 
} 

मैं कैसे ClamAV के साथ ऐसा करने का पूरा विवरण के साथ एक blog post बनाई गई है।

+3

कृपया उन उत्तरों से बचें जो प्राथमिक रूप से अन्य साइटों से लिंक हैं, क्योंकि यूआरएल चाल/मरने पर कम उपयोगी हो जाता है /आदि। क्या आप अपने ब्लॉग से अपने उत्तर में कुछ प्रासंगिक अंश संपादित कर सकते हैं? –

1

इस विषय के कुछ शोध किया है, यहाँ सार है। (यह रूप में मैं Windows का उपयोग कर रहा हूँ, के लिए Windows और सी # मुख्य रूप से है और हम सिमेंटेक एंटी-वायरस सॉफ्टवेयर का उपयोग कर रहे)

  1. सिमेंटेक उत्पाद:

    ए। सिस्टमटेक स्कैन इंजन। : यह एक निजी एंटी-वायरस सेवा की तरह है और यह आपके सिस्टम में एकीकृत करने के लिए एसडीके प्रदान करता है।

    बी। Doscan.exe: यह एक कमांड लाइन उपकरण है जो मैं हमारी कंपनी के सिस्टम में पा सकता हूं। हम फ़ाइल को स्कैन करने के लिए एक नई प्रक्रिया बनाकर हमारे कोड में उपयोग कर सकते हैं। यह सिमेंटेक स्कैनर की एक ही स्कैन प्रक्रिया का उपयोग करता है। तो यह अवरुद्ध हो जाएगा जब सॉफ़्टवेयर लंबे समय तक स्कैन कर रहा है।

  2. AntiVirusscanner

    इस पुस्तकालय एंटी वायरस सॉफ्टवेयर उत्पाद का एक आवरण है (जैसे "Microsoft Security Essentials (विंडोज डिफेंडर)") है जो आप अपने Windows ओएस पर स्थापित। चूंकि मैं अपनी मशीन पर सिमेंटेक के रीयल-टाइम स्कैन को नहीं रोक सकता, इसलिए यह नहीं पता कि यह काम करता है या नहीं। मैंने पाया कि एक उपयोगकर्ता ने कहा कि यह काम नहीं करता है लेकिन मैंने जांच नहीं की।

  3. विंडोज डिफेंडर:

    यह एक एंटी-वायरस सॉफ्टवेयर निर्माण में Windows सिस्टम है। और को एक सराहना लाइन उपकरण (mpcmdrun.exe) कहा जाता है, लेकिन मैं को अपनी मशीन पर नहीं ढूंढ सकता। और यह अक्षम था क्योंकि हम सिमेंटेक का उपयोग कर रहे हैं। यदि आपके पास यह है तो आप इसे आज़मा सकते हैं।

  4. मुक्त स्रोत एंटी वायरस उत्पाद

    ClamAV एक लोकप्रिय एक है। कुछ उत्पाद इसे अपने सिस्टम में एकीकृत करता है। और इसमें सी # एपीआई है, इसलिए यह भी निजी क्लाउड स्कैन इंजन बनाने के लिए उपयोग किया जा सकता है।

  5. वाणिज्यिक स्कैन-इंजन ओपन एपीआई जैसे: वायरस्टोटल और सोफोस।