Пример #1
0
} else {
    //3、初始化模块
    $allFiles = FileUtils::getPHPfile($project_path);
    $mainlFiles = FileUtils::mainFileFinder($scan_path);
    $initModule = new InitModule();
    $initModule->init($project_path, $allFiles);
    //4、循环每个文件  进行分析工作
    if (is_file($project_path)) {
        load_file($project_path);
    } elseif (is_dir($project_path)) {
        $path_list = $mainlFiles;
        foreach ($path_list as $path) {
            try {
                load_file($path);
            } catch (Exception $e) {
                continue;
            }
        }
    } else {
        //请求不合法
        echo "工程不存在!";
        exit;
    }
    //5、处理results 序列化
    $results = ResultContext::getInstance();
    file_put_contents($serialPath, serialize($results));
}
//6、传给template
$template_res = convertResults($results);
$smarty->assign('results', $template_res);
$smarty->display('content.html');
 /**
  * 报告漏洞的函数
  * @param string $path 出现漏洞的文件路径
  * @param Node $node 出现漏洞的node
  * @param Node $var  出现漏洞的变量node
  * @param string 漏洞的类型
  */
 public function report($node_path, $var_path, $node, $var, $type)
 {
     // 		echo "<pre>" ;
     // 		echo "有漏洞=====>". $type ."<br/>" ;
     // 		echo "漏洞变量:<br/>" ;
     // 		print_r($var) ;
     // 		echo "漏洞节点:<br/>" ;
     // 		print_r($node) ;
     //获取结果集上下文
     $resultContext = ResultContext::getInstance();
     //加入至上下文中
     $record = new Result($node_path, $var_path, $type, $node, $var);
     //如果存在记录则不添加,反之才添加
     if ($resultContext->isRecordExists($record)) {
         return;
     } else {
         $resultContext->addResElement($record);
     }
 }