Melanjutkan artikel tentang phpids pada beberapa waktu yang lalu ikuti link berikut bila kalian belum membaca artikel sebelumnya, pada artikel sebelumnya kalian hanya menyimpan log serangan pada file (tmp file) sekarang kita akan coba membuat log agar disimpan pada database. Mengapa perlu disimpan didatabase? kalian dapat memantau tingkat serangan tiap hari tanpa melihat pada Log file hasil dari serangan (bila masih disimpan pada File Log), dengan sedikit modifikasi kalian dapat membuat sebuah grafik berdasarkan hari jumlah serangan ke website yang sudah kalian buat.

Saya anggap kalian sudah membaca artikel sebelumnya, mari kita coba membuat code

1. Buat tabel untuk menyimpan log hasil serangan seperti berikut.

CREATE TABLE IF NOT EXISTS `tbl_serangan` (
      `id` int(11) unsigned NOT null auto_increment,
      `name` varchar(128) NOT null,
      `value` text NOT null,
      `page` varchar(255) NOT null,
      `tags` varchar(128) NOT null,
      `ip` varchar(15) NOT null,
      `ip2` varchar(15) NOT null,
      `impact` int(11) unsigned NOT null,
      `origin` varchar(15) NOT null,
      `created` datetime NOT null,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM ;

2. pada hasil result ubah menjadi seperti berikut

require_once 'IDS/Log/Composite.php';
require_once 'IDS/Log/Database.php';  
   
   
$compositeLog = new IDS_Log_Composite();
$compositeLog->addLogger(IDS_Log_Database::getInstance($init) );
$compositeLog->execute($result);

 

untuk lebih lengkapnya silahkan lihat code dibawah ini

set_include_path(get_include_path() . PATH_SEPARATOR . '../lib/');

if (!session_id()) {
    session_start();
}

require_once 'IDS/Init.php';

try{
    /**
      * bila kalian ingin memfilter semua variabel
      * tinggal menambahkan
      * 'GET' => $_GET, 'COOKIE' => $_COOKIE, 'REQUEST' => $_REQUEST
      * pada contoh ini saya menggunakan Pos
     **/

    $request = array(
        'POST' => $_POST,
        'GET'  => $_GET
    );

    /**
      * Konfigurasi phpids
      **/

    $init = IDS_Init::init(dirname(__FILE__) . '/../lib/IDS/Config/Config.ini.php');

    $init->config['General']['base_path'] = dirname(__FILE__) . '/../lib/IDS/';
    $init->config['General']['use_base_path'] = true;
    $init->config['Caching']['caching'] = 'none';

    /* Tambahan untuk koneksi ke database */
    $init->config['Logging']['wrapper'] = 'mysql:host=localhost;port=3306;dbname=cb_phpids';
    $init->config['Logging']['user'] = 'root';
    $init->config['Logging']['password'] = 'toor';
    $init->config['Logging']['table'] = 'tbl_serangan';


    /*
     * Inisialisasi saat menjalankan phpids
     **/

    $ids = new IDS_Monitor($request, $init);
    $result = $ids->run();

    /*
     * Bila phpids mendeteksi adanya serangan! jalankan perintah dibawah
     **/

    if (!$result->isEmpty()) {
        echo $result;

        require_once 'IDS/Log/Database.php';
        require_once 'IDS/Log/Composite.php';


        $compositeLog = new IDS_Log_Composite();
        $compositeLog->addLogger(IDS_Log_Database::getInstance($init));
        $compositeLog->execute($result);
    }

}catch (Exception $err){
    echo $err->GetMessage();
}

Mudah bukan, phpids otomatis akan insert row setiap ada serangan yang ditujukan pada website kita.

lain waktu kita akan coba membuat agar phpids otomtis mengirim hasil log ke Email.

 

Semoga bermanfaat.