我一直在寻找一个PHP入侵检测系统 Exposed是一个很好的候选人。最新的 documentation就在这里。
我在理解Exposed的安装方面遇到了一些问题,所以这是我的问题。
假设我想在一个名为users.php的文件中添加这层安全性,我已阅读文档,我的文件将如下所示:
<?php
// <EXSPOSED_SNIPPET_LOGIC>
// Enable loader, mocklogger
require 'vendor/autoload.php';
// Initiate Monolog
use Monolog\Logger;
use Monolog\Handler\FirePHPHandler;
ini_set('display_errors', 0);
// The data to filter
$data = array(
'GET' => $_GET,
'POST' => $_POST,
'COOKIE' => $_COOKIE
);
// Load filters
$filters = new \Expose\FilterCollection();
$filters->load();
// Initiate logger
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/__exposed.log', Logger::DEBUG));
$logger->pushHandler(new FirePHPHandler());
// Run tests
$manager = new \Expose\Manager($filters, $logger);
$manager->run($data);
// Define a threatlevel to act upon
$threatlevel = 12;
if( $manager->getImpact() >= $threatlevel ){
// **001**
// We are most likely under attack or atleast we should pay attention
// What do we log here, how do we log it and do we send email to alert?
$reports = $manager->getReports();
print_r($reports);
} else {
// **002**
// Assuming there is normal activity
// Should we log anything here, and if so what?
}
// </EXSPOSED_SNIPPET_LOGIC>
// Here comes the original code belonging to users.php
/* ... */
?>
现在,代码将从行中将所有请求写入日志文件:
$logger->pushHandler(new StreamHandler(__DIR__.'/__exposed.log', Logger::DEBUG));
这是否需要,这将在短时间内获得大量数据,我甚至可以在以后将日志用于任何目的?
我也很想知道Monolog Handler,这一行:
use Monolog\Handler\FirePHPHandler;
...
$logger->pushHandler(new FirePHPHandler());
这段代码甚至做了什么?我看不出有或没有它的输出与屏幕有任何区别,日志文件也似乎相同或不相同。
我的主要问题是评论中的** 001 **和** 002 **,也就是说,如果我正确理解了这个概念,希望我的问题不会错过目标。
在我看来,检查输入以及何时触发某个级别,应启用certrain日志记录部分和跟踪。 Maby这不是Exposed的一部分吗?如果您对最终确定此集成代码有一些意见,我会非常感激。
提前谢谢