首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP的IMAP库触发卡巴斯基的杀毒软件

使用PHP的IMAP库触发卡巴斯基的杀毒软件
EN

Stack Overflow用户
提问于 2010-03-13 11:32:54
回答 2查看 479关注 0票数 2

我今天刚开始使用PHP的IMAP库,当调用imap_fetchbody或imap_body时,它会触发我的卡巴斯基杀毒软件。这些病毒是Trojan.Win32.Agent.dmyq和Trojan.Win32.FraudPack.aoda。我使用XAMPP和Kaspersky AV在本地开发机器上运行此程序。

现在,我确信那里有病毒,因为盒子里有垃圾邮件(现在谁不需要一些伟哥或维柯丁?)。我知道,由于原始正文包含附件和不同的mime类型,所以正文中可能会有不好的东西。

所以我的问题是:使用这些库有什么风险吗?

我假设IMAP函数正在检索正文,将其缓存到磁盘/内存,然后AV扫描它会看到数据。

对吗?在使用这个库时,有没有什么已知的安全问题(我找不到)?它是否完美地清理了缓存的消息部分,或者病毒文件可能位于某个地方?

有没有比这更好的方法从正文中取出纯文本呢?现在我使用以下代码(归功于Kevin Steffer):

代码语言:javascript
复制
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");
}
EN

回答 2

Stack Overflow用户

发布于 2010-03-13 11:41:11

你的猜测似乎是准确的。IMAP本身就很好。你怎么处理里面的东西才是危险的。

病毒邮件的危险之处在于,用户可能会打开一个.exe附件或其他东西,所以检查的是不好的附件和潜在的有害的HTML。只要您的代码处理附件不会告诉用户打开它们,并且这只是自动处理或其他什么,您就可以继续工作了。如果您计划输出HTML内容,请确保使用HTML Purifier之类的内容。

票数 1
EN

Stack Overflow用户

发布于 2010-03-13 11:42:04

AV很可能会在这些签名通过网络堆栈时检测到这些签名。你应该能够从卡巴斯基给你的信息中辨别出检测的来源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2437170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档