Использование PHP-библиотеки IMAP запускает Антивирус Касперского - PullRequest
2 голосов
/ 13 марта 2010

Я только сегодня начал работать с PHP-библиотекой IMAP, и пока вызываются imap_fetchbody или imap_body, он запускает мой антивирус Касперского. Вирусы - это Trojan.Win32.Agent.dmyq и Trojan.Win32.FraudPack.aoda. Я запускаю это на локальной машине разработки с XAMPP и Kaspersky AV.

Теперь я уверен, что там есть вирусы, поскольку в коробке есть спам (кому сегодня не нужна виагра или викодин?). И я знаю, что, поскольку в необработанном теле есть вложения и разные типы пантомимы, в теле могут быть плохие вещи.

Итак, мой вопрос: есть ли риски при использовании этих библиотек?

Я предполагаю, что функции IMAP извлекают тело, кэшируют его на диск / в память и при сканировании AV он видит данные.

Это правильно? Существуют ли какие-либо известные проблемы безопасности при использовании этой библиотеки (я не смог их найти)? Он отлично очищает кэшированные части сообщения или вирусные файлы где-то сидят?

Есть ли лучший способ получить простой текст из текста, чем этот? Сейчас я использую следующий код (кредит Кевину Стефферу):

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");
}

Ответы [ 2 ]

1 голос
/ 13 марта 2010

Ваше предположение кажется точным. Сам IMAP в порядке. То, что вы делаете с содержимым, это то, что опасно.

Что опасно в вирусных сообщениях электронной почты, так это в том, что пользователи могут открывать вложения .exe или что-то в этом роде, поэтому плохие вложения и потенциально вредоносный HTML - это то, что проверяется. Пока ваши приложения, обрабатывающие код, не говорят пользователю об их открытии, а это просто автоматическая обработка или что-то еще, все в порядке. Если вы планируете выводить содержимое HTML, обязательно используйте что-то вроде HTML Purifier .

0 голосов
/ 13 марта 2010

AV, скорее всего, обнаруживает эти сигнатуры, когда они проходят через сетевой стек. Вы должны быть в состоянии определить источник обнаружения по сообщениям, которые вам дает Касперский.

...