Security
Security features untuk TAVP.
CSRF Protection
php
// Middleware
\Tavp\Middleware\ValidateCsrfToken::class
// In forms
{{ csrf_field() }}Password Hashing
php
// Hash
$hashed = password_hash($password, PASSWORD_BCRYPT);
// Verify
if (password_verify($password, $hashed)) {
// correct
}XSS Prevention
volt
{{ user.name }}
{{ user.content | raw }}SQL Injection Prevention
php
// Use parameterized queries
$users = DB::select('SELECT * FROM users WHERE email = ?', [$email]);
// Use ORM (safe by default)
$user = User::where('email', $email)->first();Rate Limiting
php
$router->post('/api/auth/login', [
'middleware' => 'throttle:5,1',
'uses' => 'AuthController@login',
]);Security Headers
php
'X-Content-Type-Options' => 'nosniff',
'X-Frame-Options' => 'DENY',
'X-XSS-Protection' => '1; mode=block',SOP: Jangan Komit Rahasia
Aturan yang berlaku untuk semua repository TAVP (dan project yang memakainya).
Larangan
- Token API, password, kunci privat, sertifikat
.pem/.key, file.envasli, dan file state alat bantu lokal. - File dump/seed/backup yang berisi data produksi.
.env dan .env.example
- Repo hanya boleh memuat
.env.example(template dengan placeholder). .gitignorewajib memuat.envdan.env.*kecuali.env.example.
Token lintas project
Token API yang dipakai banyak project disimpan di luar repository, misalnya di file secret global pada HOME developer (contoh: ~/.tavpbox/secrets.yml). Dengan begitu project lain bisa membaca token yang sama tanpa risiko ikut ter-push ke git. Pola akses dicatat di setiap SOP lokal masing-masing project.
Bila secret bocor ke riwayat
- Segera revoke/nonaktifkan token itu di panel (mis. Gitea → Settings → Applications).
- Buat token baru.
- Rewrite riwayat git untuk menghapus file/commit yang menyimpan secret:bash
git filter-repo --path <path> --invert-paths --force git push --force <remote> <branch> - Verifikasi ulang bahwa token tidak lagi muncul di
git log --all(atau pakai deteksi pola). - Rotasi nilai di semua config/env yang memakainya.
Checklist sebelum commit
.envtidak ikut (hanya.env.example).- Tidak ada nilai secret literal di kode/berkas yang di-commit.
- Folder state alat bantu lokal di-ignore.
- Tidak ada
.pem/.key/id_*/credentials/*.p12. - Tidak ada dump/backup data produksi.
