> ## Documentation Index
> Fetch the complete documentation index at: https://itec-docs.digitcodestudio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sistem Keamanan Backend & Frontend

> Arsitektur keamanan komprehensif pada frontend Next.js, backend Golang, dan domain resmi ITEC

## Lingkup Domain Resmi & Proteksi Lingkungan

Seluruh pertukaran data pada ekosistem digital ITEC dilindungi protokol keamanan transport TLS 1.3 dan enkripsi ujung-ke-ujung (*end-to-end encryption*):

> [card] Website Publik
>
> Informasi profil perusahaan & layanan:\
> \[[https://itec-indonesia.com](https://itec-indonesia.com)]\([https://itec-indonesia.com](https://itec-indonesia.com))

> [card] Dashboard & Portal Klien
>
> Akses operasional internal & self-service klien:\
> \[[https://portal.itec-indonesia.com](https://portal.itec-indonesia.com)]\([https://portal.itec-indonesia.com](https://portal.itec-indonesia.com))

***

## 1. Lapisan Keamanan Frontend (Next.js)

Antarmuka pengguna pada [[https://portal.itec-indonesia.com](https://portal.itec-indonesia.com)](https://portal.itec-indonesia.com) menerapkan proteksi berlapis pada sisi peramban klien:

### A. HttpOnly, SameSite, & Secure Cookies

* Sesi otentikasi disimpan dalam cookie dengan atribut `HttpOnly; Secure; SameSite=Strict`.
* Skrip JavaScript di sisi klien **tidak dapat membaca token sesi**, menutup peluang pencurian token melalui serangan *Cross-Site Scripting* (XSS).

### B. Content Security Policy (CSP) Ketat

* Header CSP membatasi asal muat sumber daya (skrip, font, gambar, style).
* Mencegah injeksi kode jahat dari pihak ketiga atau domain asing yang tidak sah.

### C. Sanitasi Input Menyeluruh & DOMPurify

* Seluruh isian form (nama klien, alamat, catatan teknis pengujian) disanitasi secara otomatis sebelum dirender ke DOM.
* Teks yang mengandung tag HTML atau skrip asing dinetralisir seketika.

### D. Next.js Middleware Route Guards

* Pengecekan status login dan peran pengguna dilakukan di lapisan Edge Middleware sebelum halaman diproses dan dikirim ke browser.
* Pengguna tanpa wewenang dialihkan (*redirect*) otomatis ke halaman login tanpa membocorkan struktur rute internal.

***

## 2. Lapisan Keamanan Backend (Golang)

Layanan backend `itec-api` dirancang dengan prinsip pertahanan mendalam (*Defense in Depth*):

### A. Otentikasi JWT & Rotasi Kunci

* Menggunakan JSON Web Token (JWT) dengan algoritma tanda tangan kriptografis kuat.
* Token memiliki masa berlaku terbatas (*short-lived access token*) yang didukung oleh *refresh token* terenkripsi di basis data.

### B. Proteksi Penuh SQL Injection (Prepared Statements)

* Seluruh interaksi ke basis data MySQL yang menampung ratusan juta baris data menggunakan **Prepared Statements** dan *parameterized queries* via ORM/Driver standar Go.
* Tidak ada kueri mentah yang menggabungkan string (*string concatenation*), sehingga injeksi SQL mustahil dilakukan.

### C. Pembatasan Frekuensi Permintaan (*Rate Limiting*)

* Integrasi antrean memori Redis untuk mencatat jumlah permintaan per alamat IP dan per akun pengguna.
* Permintaan yang melampaui batas wajar (misal: lebih dari 100 request/menit) akan diblokir dengan respons `429 Too Many Requests`, melindungi sistem dari serangan *Brute Force* dan *Denial of Service* (DoS).

### D. Kebijakan CORS Ketat (*Cross-Origin Resource Sharing*)

* Backend hanya mengizinkan lalu lintas HTTP dari domain resmi yang terdaftar:
  * `https://itec-indonesia.com`
  * `https://portal.itec-indonesia.com`
* Permintaan dari origin liar atau peramban tidak dikenal ditolak secara otomatis di level preflight OPTIONS.

***

## 3. Matriks Enkripsi Data

| Kondisi Data | Metode Enkripsi | Ruang Lingkup |
| :- | :- | :- |
| **Data in Transit** | TLS 1.3 / HTTPS (AES-256-GCM) | Seluruh komunikasi HTTP antara browser, backend, dan storage |
| **Data at Rest (Storage)** | SSE AES-256 (Server-Side Encryption) | Berkas PDF LHU, bukti bayar, dan foto lapangan di Backblaze B2 |
| **Kata Sandi Pengguna** | Argon2id / Bcrypt (Cost 12) | Kredensial akun seluruh personil dan klien |
| **Tanda Tangan Digital** | SHA-256 Hash + RSA Keypair | Pengesahan hukum dokumen resmi Lembar Hasil Uji (LHU) |

***

## 4. Audit Trail Permanen (*Immutable Logs*)

Setiap tindakan penting—seperti perubahan status penawaran, persetujuan diskon manajer, submit raw data analis, verifikasi pembayaran, dan pengesahan LHU—dicatat secara permanen dalam tabel `audit_logs`:

* Menyimpan ID pengguna, alamat IP publik, user-agent peramban, waktu kejadian (*timestamp* tersinkronisasi NTP), dan diff data sebelum serta sesudah perubahan.
* Rekaman audit tidak memiliki fitur hapus (*append-only*), menjamin ketertelusuran penuh untuk audit kepatuhan **KAN LP-894-IDN**.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.