Loading Article...

Rizky Tempest Blog

Exploring Cyber Security, Networking, Programming & Technology

Best Practices Web Security untuk Developer

Panduan lengkap best practices keamanan web untuk developer. Pelajari cara mengembangkan aplikasi web yang aman dari berbagai ancaman keamanan.

Dalam era digital yang semakin maju, keamanan web menjadi aspek kritis yang tidak boleh diabaikan oleh developer. Setiap baris kode yang kita tulis berpotensi menjadi celah keamanan jika tidak dikembangkan dengan prinsip security first.

1. Input Validation dan Sanitization

Validasi input adalah pertahanan pertama terhadap serangan seperti SQL Injection dan XSS.

Tip: Selalu validasi input di server-side, meskipun sudah divalidasi di client-side.

Contoh Validasi di PHP:

function validateEmail($email) {
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        throw new InvalidArgumentException("Email tidak valid");
    }
    return htmlspecialchars($email, ENT_QUOTES, 'UTF-8');
}

// Penggunaan
try {
    $safeEmail = validateEmail($_POST['email']);
} catch (InvalidArgumentException $e) {
    // Handle error
}

2. Protection Against SQL Injection

Gunakan prepared statements untuk mencegah SQL injection.

Contoh di MySQLi:

// JANGAN lakukan ini
$query = "SELECT * FROM users WHERE email = '" . $_POST['email'] . "'";

// LAKUKAN ini
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $_POST['email']);
$stmt->execute();

3. Cross-Site Scripting (XSS) Prevention

Selalu escape output sebelum menampilkan data ke user.

Context Escape Function Contoh
HTML htmlspecialchars() <div><?= htmlspecialchars($userInput) ?></div>
JavaScript json_encode() var data = <?= json_encode($data) ?>;
URL urlencode() <a href="page.php?data=<?= urlencode($data) ?>">Link</a>

4. Secure Authentication

Implementasi sistem autentikasi yang aman sangat penting.

  • Gunakan password hashing yang kuat (bcrypt, argon2)
  • Implementasi rate limiting pada login attempts
  • Gunakan HTTPS untuk semua komunikasi
  • Implementasi session management yang aman
Peringatan: Jangan pernah menyimpan password dalam plain text!