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