SQL Injection pada endpoint login
api.xxxxxxx.co.id · POST /v1/auth/login
CWE-89 · OWASP A03:2021 · ISO 27001 A.8.28
Parameter username dirangkai langsung ke query SQL tanpa parameterisasi. Respons aplikasi berbeda bergantung pada kondisi boolean yang disisipkan, sehingga isi database dapat diekstraksi.
POST /v1/auth/login HTTP/1.1 Host: api.xxxxxxx.co.id Content-Type: application/json {"username":"admin[payload boolean-based disunting]","password":"x"} HTTP/1.1 200 OK ← kondisi TRUE (412 byte) HTTP/1.1 401 ← kondisi FALSE (96 byte)
Penyerang tanpa akun dapat membaca tabel pengguna, termasuk data pribadi dan hash kata sandi pelanggan.
Gunakan parameterized query atau ORM, validasi input di sisi server, dan batasi hak akun database aplikasi.
Diperbaiki dengan prepared statement. Retest Q4 tidak lagi menunjukkan perbedaan respons: lulus.