Secure Code Review — Security

Secure Code Review Secure code review adalah proses memeriksa kode secara manual atau otomatis untuk menemukan vulnerability keamanan. Ini berbeda dari code rev

Secure Code Review

Secure code review adalah proses memeriksa kode secara manual atau otomatis untuk menemukan vulnerability keamanan. Ini berbeda dari code review biasa karena fokus utamanya adalah pada keamanan, bukan fungsionalitas atau style.

Kapan Melakukan Secure Code Review?

Apa yang Dicari?

1. Injection Vulnerabilities

// Cari pattern seperti:
// - String concatenation dalam query
"SELECT * FROM users WHERE id = " + userId  // 🚨 SQL Injection!

// - User input di template string
render_template_string(f"Hello {name}")  // 🚨 SSTI!

// - User input di shell command
exec(`ping ${host}`)  // 🚨 Command Injection!

2. Authentication & Authorization

// Cari:
// - Endpoint tanpa auth middleware
Route::get("/admin/users", [AdminController::class, "index"]);
// 🚨 Di mana middleware auth-nya?

// - Authorization check yang hilang
public function update(Request $request, Post $post)
{
    $post->update($request->all());
    // 🚨 Tidak ada pengecekan apakah user adalah pemilik post!
}

3. Data Exposure

// Cari:
// - Mass assignment tanpa protection
$user->update($request->all());  // 🚨 Bisa update field role!

// - API response tanpa filtering
return response()->json($user);  // 🚨 Termasuk password hash!

// - Sensitive data di log
Log::info("Payment", $request->all());  // 🚨 Log credit card!

4. Cryptography

// Cari:
// - Weak hashing
md5($password)           // 🚨 Jangan untuk password!
sha1($token)             // 🚨 Collision attacks

// - Hardcoded secrets
$secret = "my_jwt_secret"  // 🚨 Hardcoded!

// - Weak random generation
rand()                   // 🚨 Predictable!
Math.random()            // 🚨 Bukan cryptographically secure!

Tools untuk Automated Review

Ada dua pendekatan utama automated security testing: SAST (Static Application Security Testing) menganalisis source code tanpa menjalankannya, sementara DAST (Dynamic Application Security Testing) menguji aplikasi yang sedang berjalan. SAST menemukan bug lebih awal, DAST menemukan masalah runtime.

# Semgrep — pattern-based security scanner (free)
semgrep --config auto .

# PHP-specific
# Psalm (static analysis)
vendor/bin/psalm --taint-analysis

# JavaScript-specific
# ESLint security plugin
npm install eslint-plugin-security
# .eslintrc: { "plugins": ["security"] }

Code Review Checklist

Yang akan kamu pelajari