Lewati ke konten utama

BAB 50. SECURITY ARCHITECTURE

Tujuan

Menjamin keamanan data siswa, guru, dan sekolah yang tersimpan dalam sistem TemuBelajar sesuai dengan prinsip CIA Triad dan regulasi perlindungan data.


Prinsip Keamanan

PrinsipDeskripsi
ConfidentialityData hanya bisa diakses oleh yang berwenang
IntegrityData tidak dapat diubah tanpa otorisasi
AvailabilitySistem selalu dapat diakses saat dibutuhkan
AccountabilitySetiap aksi tercatat dan dapat diaudit
Non-RepudiationPengguna tidak dapat menyangkal tindakannya

Arsitektur Keamanan Berlapis

flowchart TD
U["👤 User"] --> HTTPS["🔒 HTTPS / TLS 1.3"]
HTTPS --> RL["⏱️ Rate Limiter"]
RL --> SCT["🎫 Laravel Sanctum\nToken Validation"]
SCT --> MW["🛡️ Role Middleware\n+ School Context"]
MW --> POL["📋 Laravel Policy\n(Resource Authorization)"]
POL --> C["🎛️ Controller"]
C --> SVC["⚙️ Service"]
SVC --> REPO["🗄️ Repository"]
REPO --> DB[("💾 Encrypted at Rest\nMySQL")]

style HTTPS fill:#dc2626,color:#fff
style SCT fill:#b45309,color:#fff
style POL fill:#7c3aed,color:#fff
style DB fill:#1f2937,color:#9ca3af

Komponen Keamanan

1. Authentication

MekanismeImplementasi
Token-based AuthLaravel Sanctum Personal Access Token
Password HashBcrypt (cost factor 12) / Argon2id
First LoginPaksa ganti password via flag
Token StorageFlutter Secure Storage (encrypted)

2. Authorization (RBAC)

MekanismeImplementasi
Role-BasedMiddleware role:{roleName}
Resource PolicyLaravel Policy per model
GateLaravel Gate untuk aksi global
School Isolationschool_id scoping di semua query

3. Input Validation & Sanitization

AncamanMitigasi
SQL InjectionEloquent ORM + parameter binding
XSSAuto-escaping di Blade, sanitasi input
Mass Assignment$fillable di setiap model
File UploadMIME type + size validation

4. API Security

FiturNilai
HTTPSWajib di production (HSTS)
Rate Limit Login5 percobaan per menit per IP
Rate Limit API60 request per menit
CORSWhitelist domain yang diizinkan
CSRFUntuk endpoint web (Blade admin panel)

Audit Log

Setiap aksi penting otomatis dicatat ke tabel audit_logs via Laravel Observer.

Tabel audit_logs:

KolomTipeDeskripsi
idbigintPrimary Key
user_idbigintPelaku aksi (nullable untuk system)
actionvarcharcreate, update, delete, login, logout
modulevarcharNama modul (requests, bookings, dll)
record_idbigintID record yang terpengaruh
old_valuesjsonNilai sebelum perubahan
new_valuesjsonNilai setelah perubahan
ip_addressvarcharAlamat IP pengguna
user_agenttextDevice/browser info
created_attimestampWaktu kejadian

Threat Mitigation Matrix

AncamanDeskripsiMitigasi
SQL InjectionQuery berbahaya via inputEloquent ORM + prepared statements
XSSScript injection di outputAuto-escape Blade + CSP header
CSRFCross-site request forgeryToken CSRF (Web)
Brute ForceLogin berulangRate Limiter 5x/menit + lockout
Session HijackingToken dicuriSanctum + HTTPS + Secure Storage
Fake Check-InGPS/QR palsuQR one-time + GPS radius + mock detection
Unauthorized AccessAkses data tanpa izinPolicy + Middleware + school_id scope
Data BreachDatabase dicuriHashed passwords + encrypted at rest
Privilege EscalationUbah role sendiriRole hanya bisa diubah oleh admin
API AbuseFlood requestRate limiter + throttle middleware

Security Headers

// app/Http/Middleware/SecurityHeaders.php

$response->headers->set('X-Content-Type-Options', 'nosniff');
$response->headers->set('X-Frame-Options', 'DENY');
$response->headers->set('X-XSS-Protection', '1; mode=block');
$response->headers->set('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
$response->headers->set('Content-Security-Policy', "default-src 'self'");
$response->headers->set('Referrer-Policy', 'strict-origin-when-cross-origin');

:::important Penting Dokumen BAB 41–50 menjadi fondasi implementasi backend Laravel, middleware keamanan, repository & service layer, queue processing, notifikasi realtime, chat WebSocket, validasi QR & GPS, serta arsitektur keamanan TemuBelajar yang siap dikembangkan ke lingkungan produksi. :::