2010-03-13 5 views
2

Je viens juste de commencer à travailler aujourd'hui avec la bibliothèque IMAP de PHP, et pendant que imap_fetchbody ou imap_body sont appelés, il déclenche mon antivirus Kaspersky. Les virus sont Trojan.Win32.Agent.dmyq et Trojan.Win32.FraudPack.aoda. Je cours ceci une machine de développement local avec XAMPP et Kaspersky AV.Utilisation des déclencheurs de la bibliothèque IMAP de PHP Antivirus de Kaspersky

Maintenant, je suis sûr qu'il y a des virus là-bas car il y a du spam dans la boîte (qui n'a pas besoin d'un peu de viagra ou de vicodin ces jours-ci?). Et je sais que puisque le corps brut inclut des attachements et différents types de mime, de mauvaises choses peuvent être dans le corps. Donc, ma question est la suivante: y a-t-il des risques à utiliser ces librairies?

Je suppose que les fonctions IMAP récupèrent le corps, en le mettant en mémoire cache sur le disque/la mémoire et l'analyse antivirus voit les données.

Est-ce correct? Y a-t-il des problèmes de sécurité connus en utilisant cette bibliothèque (je n'en ai trouvé aucun)? Nettoie-t-il parfaitement les parties de message en cache ou les fichiers viraux peuvent-ils être placés quelque part?

Existe-t-il un meilleur moyen d'obtenir du texte en dehors de ce corps? En ce moment je suis en utilisant le code suivant (crédit à Kevin Steffer):

function get_mime_type(&$structure) { 
    $primary_mime_type = array("TEXT", "MULTIPART","MESSAGE", "APPLICATION", "AUDIO","IMAGE", "VIDEO", "OTHER"); 
    if($structure->subtype) { 
     return $primary_mime_type[(int) $structure->type] . '/' .$structure->subtype; 
    } 
     return "TEXT/PLAIN"; 
} 

function get_part($stream, $msg_number, $mime_type, $structure = false, $part_number = false) { 

    if(!$structure) { 
     $structure = imap_fetchstructure($stream, $msg_number); 
    } 
    if($structure) { 
     if($mime_type == get_mime_type($structure)) { 
      if(!$part_number) { 
       $part_number = "1"; 
      } 
      $text = imap_fetchbody($stream, $msg_number, $part_number); 
      if($structure->encoding == 3) { 
       return imap_base64($text); 
      } else if($structure->encoding == 4) { 
       return imap_qprint($text); 
      } else { 
       return $text; 
      } 
     } 

     if($structure->type == 1) /* multipart */ { 
      while(list($index, $sub_structure) = each($structure->parts)) { 
       if($part_number) { 
        $prefix = $part_number . '.'; 
       } 
       $data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1)); 
       if($data) { 
       return $data; 
       } 
      } // END OF WHILE 
     } // END OF MULTIPART 
    } // END OF STRUTURE 
    return false; 
} // END OF FUNCTION 

$connection = imap_open($server, $login, $password); 
$count  = imap_num_msg($connection); 
for($i = 1; $i <= $count; $i++) { 
    $header = imap_headerinfo($connection, $i); 
    $from = $header->fromaddress; 
    $to  = $header->toaddress; 
    $subject = $header->subject; 
    $date = $header->date; 
    $body = get_part($connection, $i, "TEXT/PLAIN"); 
} 
+0

Le nettoyage de virus n'est certainement pas quelque chose que les fonctions PHP imap font. File_get_contents() ou cURL ne le sont pas non plus. Les tâches de ces fonctions sont simplement d'aller chercher des données; ce n'est pas leur affaire si ces données peuvent contenir du code exécutable indésirable. –

+0

Les antivirus signalent souvent des programmes «obscurs» qui envoient des courriels en tant que virus. Dites-leur que PHP va bien. – zneak

+0

Frank - Je ne lui demande pas de nettoyer les données. Je demande que puisque la fonction imap_body télécharge clairement un virus (puisqu'une AV locale l'attrape) - où et comment la bibliothèque gère-t-elle ces données? Y a-t-il des soucis pour attraper le corps brut? – TMG

Répondre

1

Votre supposition semble exacte. IMAP lui-même est bien. Ce que vous faites avec le contenu est ce qui est dangereux. Ce qui est dangereux à propos des e-mails viraux, c'est que les utilisateurs peuvent ouvrir une pièce jointe .exe ou quelque chose du genre, donc les pièces jointes mauvaises et les codes HTML potentiellement dangereux sont ce qui est vérifié. Tant que vos pièces jointes de gestion de code ne dit pas à l'utilisateur de les ouvrir et ce n'est qu'un traitement automatique ou autre, vous êtes prêt à partir. Si vous prévoyez de sortir du contenu HTML, veillez à utiliser quelque chose comme HTML Purifier.

0

L'AV détecte ces signatures lors de leur passage dans la pile réseau, très probablement. Vous devriez être capable de dire à la source de la détection des messages que Kaspersky vous donne.

Questions connexes