Input Validation Issues - Part 1
SQLite Injection – Input Validation Security Risk
Last updated
Was this helpful?
SQLite Injection – Input Validation Security Risk
Last updated
Was this helpful?
Seperti yang di bahas , Android bisa menggunakan database SQLite untuk menyimpan data secara lokal sebagai Relational Database Management System (RDBMS).
Penggunaan database SQL tanpa penanganan yang tepat berisiko terjadinya serangan SQL injection. Dengan serangan SQL Injection kita bisa mendapatkan seluruh data pada database tersebut.
Untuk melakukan serangan SQL injection Anda tidak perlu melakukan rooting pada perangkat, karena serangan ini adalah kesalahan dari program tersebut dalam menerima inputan user dan menjalankan query ke RDBMS.
Tidak adanya validasi untuk inputan user menyebabkan segala yang diinputkan user langsung dijadikan query. Hal ini bisa dimanfaatkan oleh Attacker untuk menjalankan payload-nya agar bisa mendapatkan seluruh data dari database tersebut.
Terlihat bahwa data yang diinputkan user disimpan pada database SQLite.
Dan perhatikan pada baris ke-38, nilai yang diinputan user langsung dijalankan sebagai query (request ke RDBMS) tanpa adanya filter atau validasi terlebih dahulu. Hal ini menyebabkan Attacker bisa melakukan serangan SQL Injection.
Gunakan payload %' or '1' = '1
agar query yang dijalakan oleh aplikasi menjadi seperti berikut:
Query di atas akan menampilkan semua record dari tabel sqliuser.
Terlihat bahwa data sensitif milik seluruh user dapat ditampilkan, bahkan secara plain text. Ini membuktikan bahwa aplikasi ini tidak bisa menyimpan data dengan aman.
Tidak adanya validasi untuk inputan membuat Attacker bisa menginputkan malicious payload untuk melakukan serangan SQL Injection.
Menyadari fakta tersebut, terdapat beberapa rekomendasi yang bisa developer lakukan, diantaranya:
Melakukan validasi terhadap inputan yang mengandung SQL special characters.
Melakukan salting + hashing pada informasi sensitif seperti password.
Bagian aplikasi yang akan kita bahas kali ini memiliki fitur untuk mencari data user berdasarkan username. Biasanya aplikasi menyimpan data menggunakan database. Dengan melakukan lalu menganalisis source code, kita akan mencari tahu apakah penggunaan database tersebut telah aman dari serangan SQL injection atau tidak.