Search by

robyajo / pasak

robyajo

Pasak - enterprise-grade headless self-hosted WAF, threat detection engine, zero-tolerance blocking, stepped login lockout, and security auditing toolkit for Laravel.

Package info

github.com/robyajo/pasak

Documentation

pkg:composer/robyajo/pasak

Fund package maintenance!

saweria.co/robykartis

Statistics

Installs: 14

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.1.8 2026-10-11 12:29 UTC

This package is auto-updated.

Last update: 2026-10-11 12:29:32 UTC


README

Run Tests Latest Version on Packagist Total Downloads PHP Version Laravel Version License

Pasak (Bulwark) adalah paket keamanan komprehensif (Self-Hosted WAF & Threat Engine) berbasis Headless REST API untuk ekosistem Laravel. Paket ini murni PHP Composer library (Zero-NPM / standar Spatie) yang dirancang khusus untuk memproteksi aplikasi web internal dari serangan siber tingkat lanjut, injeksi payload pentest, eksploitasi webshell, dan brute force tanpa mengikat aplikasi ke template frontend tertentu.

๐Ÿ“š Portal Dokumentasi Resmi Lengkap: Tersedia 24 bab dokumentasi mendalam di direktori documents/ serta portal interaktif offline documents/index.html.

๐ŸŒŸ Fitur Utama

  1. Self-Hosted WAF & Zero-Tolerance Threat Detection:

    • Deteksi instan tanpa batas ambang (zero-tolerance) untuk null-byte upload (.php%00.jpg), ekstensi ganda (.php.jpg), path traversal (../../../public/), probe file sensitif (.htaccess, .env, .git), dan SSTI canary ({{7*7}}).
    • Deteksi komprehensif untuk SQL Injection, Cross-Site Scripting (XSS), Local File Inclusion (LFI), Command Injection, dan Scanner User-Agents.
    • Pola regex yang diperketat dan kebal terhadap serangan ReDoS (Regular Expression Denial of Service).
  2. Isolasi Perangkat Granular (Device-Level Quarantine):

    • Dukungan isolasi di tingkat perangkat menggunakan device_id (WebRTC/fingerprint) dan local_ip.
    • Memastikan perangkat penyerang terblokir tanpa mengganggu pengguna sah lain yang berbagi alamat IP publik yang sama (seperti kantor atau router Wi-Fi publik).
  3. Tiket Banding & Permohonan Buka Blokir (Appeal Tickets):

    • Endpoint publik REST API bagi pengguna yang terblokir untuk mengajukan tiket permohonan buka blokir beserta status pelacakannya.
    • Antarmuka persetujuan admin yang secara otomatis mencabut karantina IP/perangkat dan memasukkannya ke whitelist.
  4. Multi-Tier Stepped Login Lockout:

    • Sistem pencegahan credential stuffing & brute force berjenjang (1 menit, 5 menit, 15 menit, 1 jam, hingga 24 jam).
    • Pencatatan otomatis riwayat kegagalan otentikasi ke log audit keamanan.
  5. Server Integrity & Webshell Scanner:

    • Pembuatan dan verifikasi baseline hash SHA-256 untuk berkas-berkas aplikasi inti.
    • Pemindaian berkas mencurigakan / webshell (ekstensi ganda, skrip di direktori publik/upload, polyglot media).
    • Fitur penghapusan berkas berbahaya yang aman dengan proteksi path traversal dan berkas sistem vital.
    • Audit konfigurasi keamanan server (APP_DEBUG, secure session cookie, Fortify 2FA).
  6. Streaming Access Log Scanner:

    • Pemindai berkas log mentah Apache / Nginx secara streaming berdaya hemat memori untuk menangkap penyerang yang ditolak oleh web server sebelum request mencapai proses PHP Laravel.
  7. Headless & Arsitektur Terkopel Longgar:

    • 100% REST API JSON murni.
    • Model User dan nama tabel database sepenuhnya dapat dikonfigurasi melalui config/pasak.php.
    • Trait HasSecurityRelations untuk kemudahan integrasi relasi Eloquent.

๐Ÿ“‹ Persyaratan Sistem

  • PHP: ^8.2, ^8.3, ^8.4, atau ^8.5
  • Laravel: ^10.0, ^11.0, ^12.0, atau ^13.0

๐Ÿš€ Instalasi

1. Pasang Paket via Composer

composer require robyajo/pasak:^1.0

Penting โ€” jangan pakai @dev di produksi. Menulis composer require robyajo/pasak:@dev memaksa Composer mengambil branch default dev-main (kode yang belum dirilis), bukan tag rilis stabil. Selalu pakai constraint rilis (mis. ^1.0) atau tanpa constraint sama sekali. Flag @dev hanya diperlukan saat mengembangkan paket ini lewat path repository lokal.

2. Publikasikan Aset Otomatis (pasak:install)

Gunakan perintah satu langkah untuk mempublikasikan dan menerapkan seluruh aset keamanan secara otomatis:

php artisan pasak:install

Aset yang Didapat Pengguna Setelah Menjalankan Perintah Ini:

  1. ๐Ÿ“„ config/pasak.php: Konfigurasi lengkap WAF, ambang batas blokir, IP whitelist, stepped login lockout, dan log scanner.
  2. ๐Ÿ—„๏ธ database/migrations/ (1 file, 7 tabel): Migrasi tunggal create_pasak_tables menyiapkan tabel blocked_ips, pasak_logs, login_attempts, ip_unblock_requests, user_logins, trusted_ips, dan settings (otomatis memindahkan data dari tabel lama security_logs/security_settings bila ada).
  3. ๐ŸŒ nginx.conf: Konfigurasi produksi Nginx Hardened WAF (Dual-zone rate limit, single-PHP execution /index.php, storage sandboxing).
  4. ๐Ÿ›ก๏ธ public/.htaccess: Hardening web server Apache & LiteSpeed (Blokir dotfiles, double extension .php.jpg, file backup dump .sql, dan matikan directory listing).

    Catatan Keamanan: Jika public/.htaccess lama sudah ada, installer otomatis membuat cadangan public/.htaccess.backup-YYYYMMDD_HHMMSS dan menyisipkan aturan keamanan di bawah tanpa merusak rewrite rules aplikasi Anda.

  5. ๐Ÿšซ resources/views/errors/blocked.blade.php: Halaman 403 default yang menampilkan alasan blokir, kode referensi, dan formulir banding yang terhubung langsung ke endpoint publik tiket banding. Dapat disesuaikan sesuai branding aplikasi Anda.
  6. โš™๏ธ Penyematan Variabel ke .env & .env.example: Installer secara otomatis menambahkan blok konfigurasi lengkap disertai penjelasan fungsi berbahasa Indonesia untuk setiap variabel (PASAK_*) langsung ke berkas .env dan .env.example aplikasi Anda.
  7. ๐Ÿ“Š (Opsional) Dashboard monitoring Starter Kit: Tampilan monitoring Blade murni (resources/views/pages/pasak/, semua aplikasi Laravel), Livewire, atau React (resources/js/pages/pasak/), wajib login. Dipublikasikan bila Anda menambahkan opsi --with-plain / --with-blade, --with-livewire / --with-dashboard, atau --with-tsx / --with-react-dashboard (atau --with-both untuk Blade murni + TSX).

Opsi Perintah pasak:install:

Opsi Keterangan
--force Menimpa seluruh berkas konfigurasi, migrasi, nginx.conf, public/.htaccess, dan halaman blokir.
--without-nginx Melewatkan pembuatan berkas nginx.conf.
--without-apache Melewatkan pembuatan berkas apache2.conf.
--without-htaccess Melewatkan pembaruan berkas public/.htaccess.
--without-views Melewatkan publikasi halaman blokir errors/blocked.blade.php.
--without-env Melewatkan penyematan variabel konfigurasi ke berkas .env dan .env.example.
--without-user-trait Melewatkan penyematan trait HasSecurityRelations ke model User.
--without-middleware Melewatkan pendaftaran middleware WAF ke bootstrap/app.php / Kernel.
--without-routes Melewatkan publikasi berkas routes/pasak.php dan routes/pasak-api.php.
--without-api Melewatkan pemeriksaan/pemasangan rute API (install:api).
--with-dashboard Mempublikasikan tampilan dashboard monitoring Livewire Starter Kit (wajib login).
--with-livewire Alias dari --with-dashboard.
--with-plain Mempublikasikan tampilan dashboard Blade murni, jalan di semua aplikasi Laravel (wajib login).
--with-blade Alias dari --with-plain.
--with-react-dashboard Mempublikasikan tampilan dashboard monitoring React / TSX (wajib login).
--with-tsx Alias dari --with-react-dashboard.
--with-both Mempublikasikan kedua tampilan dashboard (Blade murni & TSX).
--stack= Tentukan stack dashboard: blade, tsx, both, atau none.
--with-htaccess Memaksa pembaruan berkas public/.htaccess.

Publikasi Aset Secara Parsial (Manual):

# 1. Konfigurasi saja
php artisan vendor:publish --tag=pasak-config

# 2. Migrasi database saja
php artisan vendor:publish --tag=pasak-migrations

# 3. Konfigurasi server Nginx saja
php artisan vendor:publish --tag=pasak-nginx

# 4. Aturan hardening Apache .htaccess saja
php artisan vendor:publish --tag=pasak-htaccess --force

# 5. Halaman blokir default saja
php artisan vendor:publish --tag=pasak-views --force

# 6. Dashboard monitoring Blade (Livewire Starter Kit)
php artisan vendor:publish --tag=starterkit-blade --force

# 7. Dashboard monitoring TSX (React Starter Kit)
php artisan vendor:publish --tag=starterkit-tsx --force

# 8. Keduanya (Blade & TSX)
php artisan vendor:publish --tag=starterkit-all --force

# 9. Seluruh aset sekaligus
php artisan vendor:publish --tag=pasak-all --force

Jalankan migrasi database:

php artisan migrate

3. Dashboard Monitoring Starter Kit (Blade & TSX)

Paket ini menyediakan panel monitoring siap pakai untuk starter kit resmi Laravel (Blade & React/TSX) yang dapat dipublikasikan langsung ke dalam aplikasi host di prefix /pasak.

Tersedia opsi instalasi fleksibel lewat php artisan pasak:install:

  • Blade murni (semua aplikasi): php artisan pasak:install --with-plain (atau --tag=plain-views)
  • Livewire: php artisan pasak:install --with-livewire (atau --tag=starterkit-blade)
  • React / TSX: php artisan pasak:install --with-tsx (atau --tag=starterkit-tsx)
  • Keduanya: php artisan pasak:install --with-both (atau --tag=starterkit-all)

a. Blade Starter Kit (Livewire + Flux UI)

php artisan vendor:publish --tag=starterkit-blade

Perintah tersebut menyalin resources/views/pages/pasak/*.blade.php (tujuh halaman Livewire single-file component + layout) beserta konfigurasi dashboard pada config/pasak.php.

b. React / TSX Starter Kit (Inertia + React + shadcn/ui)

php artisan vendor:publish --tag=starterkit-tsx

Perintah tersebut menyalin:

  1. resources/js/pages/pasak/*.tsx โ€” tujuh halaman Inertia/React: Overview, Security Logs, Blocked IPs, Server Audit, User Sessions, Unblock Appeals, dan Settings.
  2. resources/js/components/pasak/*.tsx โ€” komponen pendukung (navigasi & paginasi).
  3. config/pasak.php โ€” menyertakan konfigurasi dashboard.

โ„น๏ธ Halaman React/TSX di-render server-side oleh controller Inertia bawaan paket. Setelah publikasi, jalankan npm run build (atau npm run dev).

Mengaktifkan Dashboard & Wajib Login

Konfigurasi di .env:

PASAK_DASHBOARD_ENABLED=true
PASAK_DASHBOARD_DRIVER=livewire     # atau "react" / "both"
PASAK_DASHBOARD_PREFIX=pasak
# Batasi hanya role admin (default: false, cukup login pengguna)
PASAK_DASHBOARD_ADMIN_ONLY=false

Setelah diaktifkan, panel dapat diakses pada /pasak.

๐Ÿ”’ Wajib Login: Seluruh halaman dashboard di prefix /pasak dilindungi oleh middleware web + auth. Pengguna yang belum login otomatis diarahkan ke halaman login. Jika Anda ingin membatasi dashboard khusus untuk administrator, set PASAK_DASHBOARD_ADMIN_ONLY=true di berkas .env.

โš™๏ธ Konfigurasi & Integrasi

1. Tambahkan Trait ke Model User

Buka model App\Models\User.php dan tambahkan trait HasSecurityRelations:

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Internal\Pasak\Concerns\HasSecurityRelations;

class User extends Authenticatable
{
    use HasSecurityRelations;

    // ...
}

Trait ini menyediakan relasi Eloquent bawaan:

  • $user->logins(): Riwayat login pengguna (UserLogin).
  • $user->trustedIps(): Daftar IP terpercaya pengguna (TrustedIp).
  • $user->securityLogs(): Riwayat event keamanan pengguna (SecurityLog).
  • $user->blockedIps(): Riwayat pemblokiran yang dilakukan oleh pengguna (BlockedIp).
  • $user->resolvedTickets(): Tiket permohonan buka blokir yang diselesaikan admin (IpUnblockRequest).

2. Daftarkan Middleware

Pada Laravel 11 / 12 / 13 (bootstrap/app.php)

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        // Daftarkan penegakan WAF dan blokir IP secara global
        $middleware->append(\Internal\Pasak\Http\Middleware\BlockIpAddress::class);
        $middleware->append(\Internal\Pasak\Http\Middleware\DetectSecurityThreats::class);

        // Lacak aktivitas sesi pengguna di grup web
        $middleware->web(append: [
            \Internal\Pasak\Http\Middleware\TrackUserActivity::class,
        ]);

        // Alias middleware keamanan
        $middleware->alias([
            'pasak.block' => \Internal\Pasak\Http\Middleware\BlockIpAddress::class,
            'pasak.detect' => \Internal\Pasak\Http\Middleware\DetectSecurityThreats::class,
            'pasak.admin' => \Internal\Pasak\Http\Middleware\EnsureSecurityAdmin::class,
            'pasak.activity' => \Internal\Pasak\Http\Middleware\TrackUserActivity::class,
        ]);
    })
    ->create();

Pada Laravel 10 (app/Http/Kernel.php)

protected $middleware = [
    // ...
    \Internal\Pasak\Http\Middleware\BlockIpAddress::class,
    \Internal\Pasak\Http\Middleware\DetectSecurityThreats::class,
];

protected $middlewareGroups = [
    'web' => [
        // ...
        \Internal\Pasak\Http\Middleware\TrackUserActivity::class,
    ],
];

protected $middlewareAliases = [
    'pasak.block' => \Internal\Pasak\Http\Middleware\BlockIpAddress::class,
    'pasak.detect' => \Internal\Pasak\Http\Middleware\DetectSecurityThreats::class,
    'pasak.admin' => \Internal\Pasak\Http\Middleware\EnsureSecurityAdmin::class,
    'pasak.activity' => \Internal\Pasak\Http\Middleware\TrackUserActivity::class,
];

๐Ÿ“ก Headless REST API Reference

Semua rute REST API didaftarkan secara default dengan prefix /api/pasak (dapat diubah melalui config('pasak.routes.prefix')).

1. Endpoint Publik

Metode URI Deskripsi
POST /api/pasak/unblock-tickets/submit Mengirim permohonan banding pembukaan blokir IP/perangkat
GET /api/pasak/unblock-tickets/check/{ticketNumber} Memeriksa status tiket permohonan banding

Contoh Payload Pengajuan Tiket:

POST /api/pasak/unblock-tickets/submit
{
  "name": "Budi Santoso",
  "email": "budi@example.com",
  "phone": "081234567890",
  "reason": "Alamat IP kantor saya terblokir saat mengakses dashboard.",
  "device_id": "client-uuid-1234",
  "local_ip": "192.168.1.50"
}

2. Endpoint Pengguna Terautentikasi (auth)

Metode URI Deskripsi
POST /api/pasak/trusted-ips/save-my-ip Menyimpan alamat IP saat ini sebagai IP terpercaya pengguna

3. Endpoint Manajemen Admin (auth + pasak.admin)

Log Keamanan & Analitik Serangan

Metode URI Deskripsi
GET /api/pasak/logs Mendapatkan log ancaman (paginasi, filter event/level/tanggal, statistik, tren 24 jam/7 hari)
DELETE /api/pasak/logs/clear Mengosongkan seluruh log audit keamanan
DELETE /api/pasak/logs/{id} Menghapus satu entri log keamanan tertentu

Daftar Blokir IP & Perangkat

Metode URI Deskripsi
GET /api/pasak/blocked-ips Mendapatkan daftar IP yang diblokir (aktif & kedaluwarsa)
POST /api/pasak/blocked-ips Memblokir IP atau perangkat secara manual
GET /api/pasak/blocked-ips/{id} Melihat detail data pemblokiran
PATCH /api/pasak/blocked-ips/{id}/toggle Mengaktifkan / menonaktifkan status blokir
DELETE /api/pasak/blocked-ips/{id} Mencabut blokir dan menghapus entri

Audit Server & Integritas Berkas

Metode URI Deskripsi
GET /api/pasak/server Laporan komprehensif audit keamanan server & integritas berkas
POST /api/pasak/server/baseline Membuat baseline hash SHA-256 berkas aplikasi baru
DELETE /api/pasak/server/baseline Menghapus baseline integritas
DELETE /api/pasak/server/suspicious-files Menghapus berkas mencurigakan/webshell yang terdeteksi
DELETE /api/pasak/lockouts/{id} Membuka kunci akun yang terkena lockout login berjenjang

Sesi Pengguna & IP Terpercaya

Metode URI Deskripsi
GET /api/pasak/user-sessions Riwayat sesi login seluruh pengguna
GET /api/pasak/user-sessions/realtime Daftar pengguna yang aktif secara real-time
DELETE /api/pasak/user-sessions/{id} Menghapus log sesi pengguna
DELETE /api/pasak/user-sessions/session/{sessionId} Memutus sesi pengguna tertentu (force logout)
DELETE /api/pasak/trusted-ips/{id} Menghapus IP dari daftar terpercaya

Pengelolaan Tiket Banding

Metode URI Deskripsi
GET /api/pasak/unblock-tickets Daftar seluruh tiket permohonan banding
POST /api/pasak/unblock-tickets/{id}/respond Menyetujui atau menolak tiket (buka blokir & whitelist)
DELETE /api/pasak/unblock-tickets/{id} Menghapus arsip tiket

๐Ÿ›ก๏ธ Validation Rules Bawaan

Paket menyediakan aturan validasi siap pakai untuk request form aplikasi Anda:

1. SafeImageFile

Memvalidasi unggahan gambar dan mencegah serangan polyglot image (gambar JPEG/PNG sah yang diinjeksi kode <?php), ekstensi ganda berbahaya, dan SVG bereksekusi JavaScript/XSS:

use Internal\Pasak\Rules\SafeImageFile;

$request->validate([
    'avatar' => ['required', 'file', new SafeImageFile(maxKilobytes: 2048)],
]);

2. SafeAssetPath

Memvalidasi string path aset gambar/ikon agar terbebas dari path traversal, probe direktori sensitif, dan file .htaccess:

use Internal\Pasak\Rules\SafeAssetPath;

$request->validate([
    'icon_path' => ['required', 'string', new SafeAssetPath],
]);

๐Ÿ’ป Perintah Artisan CLI

Paket ini menyertakan perintah Artisan lengkap untuk otomasi di server produksi:

1. Pemindaian Log Akses Web Server (pasak:scan-logs)

Memindai berkas log Apache atau Nginx, mendeteksi pola serangan, dan memblokir IP penyerang secara otomatis:

# Pratinjau temuan tanpa memodifikasi database (dry-run)
php artisan pasak:scan-logs --file=/var/log/nginx/access.log --dry-run

# Pindai, impor ke log keamanan, dan blokir IP penyerang zero-tolerance
php artisan pasak:scan-logs --file=/var/log/nginx/access.log --import --block

2. Manajemen Baseline Integritas Berkas (pasak:baseline)

# Menampilkan status verifikasi integritas berkas
php artisan pasak:baseline

# Membuat baseline baru
php artisan pasak:baseline --create

# Menghapus baseline
php artisan pasak:baseline --destroy

3. Membuka Blokir IP (pasak:unblock-ip)

php artisan pasak:unblock-ip 198.51.100.50

4. Pembersihan Log Kedaluwarsa (pasak:prune-logs)

# Menghapus log lebih tua dari durasi retensi terkonfigurasi (default: 90 hari)
php artisan pasak:prune-logs

# Menghapus log lebih tua dari 30 hari
php artisan pasak:prune-logs --days=30

5. Pembersihan Data Residu Pentest (pasak:purge-injected-data)

Mendeteksi dan menghapus payload injeksi sisa pengujian keamanan (seperti {{7*7}}, .htaccess, path traversal) dari tabel aplikasi:

# Mode simulasi (hanya mendeteksi data tercemar)
php artisan pasak:purge-injected-data

# Hapus data yang terindikasi
php artisan pasak:purge-injected-data --force

6. Pembaruan Otomatis & Sinkronisasi Komponen (pasak:upgrade)

Periksa rilis terbaru dan perbarui package sekaligus sinkronkan migrasi database, rute kustom, dan tampilan dashboard monitoring:

# Periksa apakah ada versi baru yang tersedia
php artisan pasak:upgrade --check

# Jalankan proses upgrade dan sinkronisasi otomatis
php artisan pasak:upgrade

# Sinkronkan aset lokal tanpa composer update
php artisan pasak:upgrade --no-composer --force

Notifikasi Otomatis: Saat menjalankan php artisan serve atau composer run dev, sistem akan secara otomatis memeriksa versi terbaru dari Packagist/GitHub secara non-blocking dan menampilkan notifikasi di terminal konsol bila versi baru telah dirilis.

๐ŸŒ Konfigurasi Web Server Hardened

Paket ini menyertakan template konfigurasi hardened siap pakai untuk web server Nginx maupun Apache / LiteSpeed / cPanel.

1. Nginx Hardened WAF (nginx.conf)

Diterbitkan via php artisan vendor:publish --tag=pasak-nginx:

  1. Dua Zona Rate Limiting Terpisah:
    • auth_limit: 5 request/menit (burst 5) untuk endpoint sensitif (/login, /register, /forgot-password, /reset-password, dll.).
    • general_limit: 30 request/detik (burst 50) untuk rute umum aplikasi.
  2. Proteksi Aset Statis Vite / Frontend:
    • Direktori /build/ dibebaskan dari rate-limiting agar chunk parallel JS tidak memicu HTTP 429 atau NS_ERROR_CORRUPTED_CONTENT.
  3. Strict Single-PHP Execution:
    • Hanya /index.php yang boleh dieksekusi oleh PHP-FPM. Berkas skrip lain yang berada di direktori publik langsung ditolak dengan HTTP 403.
  4. Pencegahan Double Extension & Ekstensi Berbahaya:
    • Menolak ekstensi ganda (.php.jpg, .phtml.zip, dll.).
  5. Sandboxing Direktori Storage / Upload:
    • Folder /storage/ dimatikan dari eksekusi PHP dengan header X-Content-Type-Options: nosniff dan CSP sandbox.
  6. Blokir Dotfiles & Berkas Backup:
    • Menolak akses berkas .env, .git, .htaccess, .sql, .bak, dan .log.

2. Apache & LiteSpeed Hardened (public/.htaccess)

Diterapkan otomatis via php artisan pasak:install atau php artisan vendor:publish --tag=pasak-htaccess:

  1. Front Controller & Authorization Header: Routing Laravel standar, pemeliharaan header Authorization dan X-XSRF-Token.
  2. Blokir Akses ke Dotfile (<FilesMatch "^\.">):
    • Menutup akses ke .htaccess, .env, .git, .htpasswd (kompatibel Apache 2.4+ Require all denied dan Apache 2.2 Deny from all).
  3. Blokir Serangan Ekstensi Ganda (Double Extension Webshell):
    • Menolak berkas berbahaya seperti shell.php.jpg atau trik null-byte wne.php%00.jpg:
    <FilesMatch "\.(php[0-9]?|phtml|pht|phar|phps|asp|aspx|ashx|asmx|jsp|jspx|cgi|pl|py|rb|sh|bash|exe|dll|bat|cmd|scr)\.[a-z0-9]+$">
        Require all denied
    </FilesMatch>
  4. Blokir Berkas Backup, Dump Database, dan Log Sensitif:
    • Menutup berkas .sql, .bak, .old, .orig, .save, .swp, .log, .ini, .conf, .yml, .yaml.
  5. Matikan Directory Listing:
    • Options -Indexes mencegah browser menampilkan daftar berkas di dalam folder publik/storage.

๐Ÿงช Menjalankan Pengujian (Testing)

Paket ini dilengkapi dengan pengujian menyeluruh menggunakan Pest PHP dan Orchestra Testbench:

./vendor/bin/pest

Hasil uji: 115 passed (478 assertions) 100% Passed mencakup:

  • DetectorTuningTest: Verifikasi akurasi pola deteksi dan ketahanan ReDoS.
  • InstantBlockTest: Verifikasi zero-tolerance instant blocking pada percobaan pertama.
  • PolyglotImageTest: Uji penolakan polyglot image ber-tag PHP dan SVG XSS.
  • SecurityAdminApiTest: Pengujian lengkap otorisasi, mutasi data, dan respons JSON REST API.
  • DeviceLevelBlockingTest: Uji isolasi perangkat pada IP publik bersama.
  • ServerSecurityTest: Audit keamanan lingkungan, baseline SHA-256, dan webshell sanitizer.
  • AccessLogScanTest: Uji parser streaming log akses web server.
  • PasakTest: Uji ambang batas auto-blocking dan rotasi log.
  • NginxPublishTest: Verifikasi publikasi konfigurasi hardened virtual host Nginx.
  • HtaccessPublishTest: Verifikasi publikasi, penambahan aturan otomatis, dan pencadangan .htaccess Apache.

โค๏ธ Dukungan (Support)

Jika paket ini bermanfaat untuk proyek Anda, Anda dapat mendukung pengembangan berkelanjutannya melalui:

Dukungan Anda sangat membantu agar paket ini tetap terawat, aman, dan terus diperbarui. Terima kasih! ๐Ÿ™

๐Ÿ“„ Lisensi

Paket ini dilisensikan di bawah lisensi terbuka MIT.