Back to blog
Security

SQL Injection: Cuma Ngetik ' OR 1=1 di Form Login, Database Jebol?

Hacker tidak selalu butuh alat canggih. Kadang, mereka cuma butuh mengetik tiga karakter aneh di kolom password, dan aplikasi otomatis memberikan akses Admin.

super admin·16 Juli 2026·2 min read
SQL Injection: Cuma Ngetik ' OR 1=1 di Form Login, Database Jebol?
Article Content

Bayangin Budi Benci Sama Kampusnya...

Bayangin Budi kesal karena nilainya jelek. Dia buka portal sistem akademik kampus. Di form Login, alih-alih masukin *username* dan *password* yang benar, Budi cuma mengetik teks aneh ini di kolom *username*: ' OR 1=1 --

Lalu dia kosongkan *password*-nya dan klik Enter. Tiba-tiba, Bum! Budi masuk ke halaman utama dengan tulisan "Selamat Datang, Administrator!". Budi tidak nge-hack pakai software aneh-aneh. Dia cuma numpang ngetik. Kok bisa?

Masalahnya: Server Terlalu Polos Menyambung Teks

Di belakang layar, Programmer kampus Budi membuat query database yang sangat bodoh. Kodenya menggabungkan (*concatenate*) teks mentah-mentah seperti ini:

SELECT * FROM users WHERE username = '" + inputUser + "' AND password = '" + inputPass + "'

Saat Budi memasukkan ' OR 1=1 --, otak *database* (MySQL) akan membaca perintah utuhnya menjadi seperti ini:
SELECT * FROM users WHERE username = '' OR 1=1 -- AND password = ''

MySQL membacanya begini: "Tolong carikan user yang namanya kosong, ATAU JIKA 1 SAMA DENGAN 1... (oh iya, sisa kalimat di belakangnya diabaikan saja karena ada tanda -- yang artinya komentar)."

Karena pernyataan matematika 1=1 adalah BENAR (TRUE) SELAMANYA, maka MySQL menganggap syarat *Login* ini Valid! Ia langsung meloloskan Budi dan mengambil akun urutan pertama di database (yang biasanya adalah akun Admin!). Ini disebut serangan SQL Injection.

Nah, Di Sinilah 'Parameterized Queries' Masuk!

Untuk mencegahnya, developer dilarang keras menempelkan (*concat*) teks *user* langsung ke *query*. Kita harus menggunakan Parameterized Queries (atau ORM seperti Prisma).

  • Dengan cara ini, query utamanya dikunci dulu oleh *driver database*: SELECT * FROM users WHERE username = ?
  • Barulah teks dari *user* dimasukkan ke dalam tanda ? (Tanda tanya).
  • Jika Budi ngetik trik ' OR 1=1 --, database TIDAK AKAN membacanya sebagai instruksi komputer. Database murni menganggap itu adalah sebuah String nama orang. Database akan mencari orang malang yang namanya beneran "' OR 1=1 --". Tentu saja hasilnya kosong, dan Budi gagal Login!

Intinya: Aturan mutlak keamanan siber adalah: Never Trust User Input. Jangan pernah membiarkan data dari user bergabung secara fisik dengan sintaks kodemu!

Mau langsung pakai template?

Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.

Browse Templates