Bagaimana cara kerja SQL injection dalam metode hac*ing?

Caranya, hacker tulis data yang diminta diikuti dengan query berbahaya dalam satu string. Jika server dibiarkan begitu saja untuk terima data mentah tanpa dibersihkan, ini bisa bahaya.

Misal ada satu halaman yang punya kotak teks dan minta user masukkan namanya.

$name = $_POST[“name”];$result = $sql->query(“SELECT * FROM Users WHERE Name = N'” . $name . “‘;”);

Jadi ceritanya server akan jalankan query SELECT untuk ambil record user tersebut. Kalau kotak teks cuma diisi “Anu” sih tidak masalah, karena query akan jadi:

SELECT * FROM Users WHERE Name = N’Anu’;

(ini ceritanya pakai Microsoft SQL Server, prefix N sebelum tanda kutip tanda bahwa dia string Unicode)

Tapi ada hacker iseng nih. Dia isi kotak teks dengan:

Anu’; DELETE FROM Users WHERE ‘a’ = ‘a

Maka query yang dieksekusi akan jadi:

SELECT * FROM Users WHERE Name = N’Anu’;DELETE FROM Users WHERE ‘a’ = ‘a’;

Malah jadi ada dua query yang dijalankan berurutan. Query pertama tetap SELECT query seperti biasa, tapi query kedua adalah DELETE query untuk mengosongkan tabel Users. (klausa WHERE ‘a’ = ‘a’ basically sama dengan WHERE TRUE, gunanya cuma buat ngakalin tanda kutip penutup di kode server)

Cara menangkal SQL injection tipe sederhana macam ini adalah meng-escape tanda kutip yang muncul di data inputan. Di MySQL, cukup timpa dengan \’ dan \”, kalau Microsoft SQL Server tanda kutip tunggal harus didobel. (Bukan jadi kutip ganda, tapi jadi dua kutip tunggal berurutan)

Ada banyak macam SQL injection, contoh diatas hanya satu dari seribu. Cara menangkal masing-masing beda. Library yang bagus harusnya sudah punya penangkal SQL injection

Author: A-Whisper

Leave a Reply

Your email address will not be published. Required fields are marked *