Proteksi Terhadap Kerentanan SQL Injection 2019 v.1.3.1 Sign

Anda mungkin juga menyukai

Anda di halaman 1dari 24

BADAN SIBER DAN SANDI NEGARA

DIREKTORAT PROTEKSI IIKN

MENGENAL SQL INJECTION


DAN CARA MENCEGAHNYA

2019
APA ITU SQL INJECTION?
SQL Injection merupakan salah satu risiko aplikasi/situs web yang paling sering
ditemukan. Berdasarkan laporan keamanan aplikasi yang dikeluarkan oleh Veracode,
32% dari aplikasi web paling tidak memiliki satu kerentanan SQL Injection.
Berdasarkan Open Web Application Security Project (OWASP), injection juga
merupakan merupakan ancaman nomor satu terhadap keamanan aplikasi web.
Sebagai tambahan, berdasarkan laporan kerentanan dari komunitas yang diperoleh Badan
Siber dan Sandi Negara (BSSN) melalui Voluntary Vulnerability Disclosure Program
(VVDP), dari bulan Januari s.d. April 2019, 73% dari laporan kerentanan yang
diterima merupakan kerentanan SQL Injection. Berdasarkan statistik di atas,
meskipun termasuk ke dalam kerentanan yang mudah untuk dicegah, saat ini SQL
Injection tetap menjadi risiko pada aplikasi web yang paling sering ditemukan dan banyak
organisasi memiliki kerentanan terhadap potensi kebocoran data akibat serangan SQL
Injection.

Gambar 1 - Data Rekapitilasi VVDP BSSN Januari s.d Mei 2019 [1]

Serangan SQL injection atau Injeksi SQL merupakan teknik serangan injeksi kode
yang memanfaatkan celah keamanan yang terjadi pada layer basis data dari sebuah
aplikasi. Hal ini terjadi sebagai akibat dari data yang diinputkan oleh pengguna tidak
dilakukan validasi dan dimuat di dalam baris perintah query SQL. Dengan demikian

Versi 1.3 1
menjadikan sebagian data yang diinputkan pengguna tersebut diperlakukan sebagai
bagian dari kode SQL.

Gambar 2 - Penjelasan singkat Pengertian SQL Injection

DAMPAK SERANGAN SQL INJECTION


Dampak dari teknik serangan SQL Injection cukup beragam, beberapa diantaranya yaitu
sebagai berikut:

Melakukan Bypass terhadap Mekanisme Otentikasi


Teknik serangan ini memungkinkan penyerang untuk masuk ke
dalam aplikasi dengan hak akses administratif, tanpa
menggunakan username dan password yang valid.

Melakukan Modifikasi Data (Compromised Integritas Data)


Melalui teknik serangan ini penyerang juga dapat melakukan
perubahan terhadap konten data yang tersimpan di dalam basis
data, atau memanfaatkan celah keamanan ini untuk memasukan
konten yang berbahaya ke dalam halaman web. Dalam kasus

Versi 1.3 2
database yang diubah merupakan database perbankan, penyerang
mungkin saja dapat melakukan pengubahan terhadap transaksi
nasabah, atau memindahkan isi rekening nasabah ke rekening yang
dikendalikan olehnya sehingga menimbulkan dampak finansial bagi
korban

Melakukan Compromised terhadap Ketersediaan Data


Dengan melakukan penghapusan terhadap seluruh data yang
tersimpan di dalam basis data, Teknik serangan ini juga berpotensi
terhadap aspek ketersediaan (availability) dari sistem tersebut.

Melakukan Pencurian Informasi


Serangan ini juga dapat dimanfaatkan oleh penyerangan untuk
melakukan pencurian informasi sensitive yang tersimpan di dalam
basis data.

Eksekusi Perintah Jarak Jauh (Remote Command Execution)


Melalui teknik serangan ini penyerang juga dapat melakukan
perintah eksekusi melalui database yang memungkinkan penyerang
untuk mengambil alih host atau target.

Melakukan Impersonasi Pengguna


Penyerang juga dapat memanfaatkan serangan ini untuk melakukan
impersonasi dengan menanfaatkan akun pengguna yang aktif di
dalam basis data.

JENIS SERANGAN SQL INJECTION


Secara umum, terdapat beberapa jenis serangan SQL Injection, yaitu:
Tautology Based Attack

Versi 1.3 3
} Tujuan utama dari serangan jenis Tautology-based attack adalah
untuk menginjeksi kode pada satu atau lebih baris perintah SQL
dengan kondisi bersyarat sehingga baris perintah tersebut akan selalu
dieksekusi dengan nilai “True”.
} Penyerang mengeksploitasi parameter yang dapat diinjeksi yang
digunakan di dalam baris perintah query dengan sintaks kondisional
bersyarat WHERE.
} Tujuan Serangan:
Melakukan bypass terhadap mekanisme otentikasi, mengidentifikasi
parameter yang dapat diinjeksi, melakukan ekstrasi data.

SELECT accounts FROM users


WHERE login=’’ or 1=1 --
AND pass=’’ AND pin=

Query Ilegal / Query yang Secara Logik Salah (Illegal/Logically


Incorrect Queries)
} Serangan ini memungkinkan penyerang untuk memperoleh informasi
mengenai tipe dan struktur dari back-end basis data dari sebuah
aplikasi berbasis web.
} Tujuan Serangan:
Mengidentifikasi parameter yang dapat diinjeksi, melakukan database
finger-printing, dan melakukan ekstraksi data.

SELECT akun FROM nasabah


WHERE login=’’ AND pass=’’
AND pin= convert (int,(select top 1 name
from sysobjects where xtype=’u’))

Union Query

Versi 1.3 4
} Serangan jenis ini, penyerang melakukan eksploitasi terhadap
parameter yang rentan untuk mengubah data set yang dikembalikan
dari perintah query yang dijalankan.
} Tujuan Serangan:
Melakukan bypass otentikasi, melakukan ekstraksi data.

SELECT akun FROM nasabah WHERE login=’’ UNION


SELECT noKartu from KartuKredit where
noAkun=1077 -- AND pass=’’ AND pin=

Piggy-Backed Query
} Pada serangan jenis ini, penyerangan berupaya untuk menginjeksi
tambahan perintah query ke dalam perintah query yang asli.
Kerentanan terhadap serangan jenis ini umumnya bergantung pada
konfigurasi basis data yang mengizinkan beberapa perintah query
SQL di dalam satu string tunggal.
} Tujuan Serangan:
Melakukan ekstraksi data, menambahkan atau memodifikasi data,
melakukan serangan DoS (Denial of Services), mengeksekusi
perintah jarak jauh (remote commands execution).

SELECT akun FROM nasabah WHERE login=’doe’ AND


pass=’’; drop table nasabah -- ’ AND pin=123

Stored-Procedures
} Serangan jenis ini penyerang berusaha untuk mengeksekusi “stored
procedures”.
} Tujuan Serangan:
Melakukan privilege escalation, melakukan serangan Denial of Service
(DoS), melakukan eksekusi perintah jarak jauh (remote command
execution).

Versi 1.3 5
Inference
} Pada teknik serangan ini, penyerang melakukan modifikasi terhadap
query untuk menyusun kembali ke dalam bentuk aksi yang dieksekusi
berdasarkan jawaban atas pertanyaan benar/salah mengenai nilai
data yang tersimpan di dalam database
} Penyerang umumnya menggunakan teknik ini untuk menyerang situs
yang memiliki tingkat keamanan yang sudah cukup baik sehingga
pada saat injeksi berhasil dilakukan, tidak ada informasi berguna
yang diperoleh penyerang dari pesan error melalui basis data.
} Tujuan Serangan:
Mengidentifikasi parameter yang dapat diinjeksi, melakukan ekstraksi
data serta menentukan skema basis data dari sistem target.

SELECT accounts FROM users


WHERE login=’legalUser’ and
ASCII(SUBSTRING((select top 1 name from
sysobjects),1,1))
> X WAITFOR 5 -- ’ AND pass=’’ AND pin=0

Alternate Encodings
} Teknik serangan ini dilakukan dengan memodifikasi teks yang
diinjeksi dengan tujuan untuk menghindari deteksi oleh mekanisme
defensif dari teknik pemrograman dan juga beberapa mekanisme
penegahan otomatis terhadap serangan SQL Injection.
} Tujuan Serangan:
Menghindari/mengelabui deteksi perimeter keamanan.

SELECT accounts FROM users WHERE login=’legalUser’;


exec(char(0x73687574646f776e)) -- AND pass=’’
AND pin=’’

Versi 1.3 6
Secara umum serangan SQL Injection dapat diklasifikasikan ke dalam 3
(tiga) kategori utama , yakni:
1. In-band SQL Injection
Merupakan tipe serangan SQL Injection yang paling umum dan
mudah untuk dieksploitasi. In-band SQL Injection terjadi ketika
penyerang dapat menggunakan kanal komunikasi yang sama baik
untuk melancarkan serangan maupun memperoleh hasil dari
serangan. Terdapat dua tipe yang paling umum dari in-band SQL
Injection, yaitu
a. Error-based SQL Injection. Teknik serangan ini sangat
bergantung pada pesan kesalahan yang dihasilkan oleh server
database untuk memperoleh informasi mengenai struktur dari
database. Pada beberapa kasus, teknik ini sendiri cukup bagi
penyerang untuk melakukan enumerasi terhadap keseluruhan
database.
b. Union-Based SQL Injection. Teknik serangan ini memanfaatkan
operator SQL UNION untuk mengkombinasikan hasil dari dua atau
lebih perintah SELECT ke dalam satu hasil yang kemudian
dikembalikan sebagai bagian dari HTTP response.

2. Inferential SQL Injection (Blind SQL Injection)


Tidak seperti in-band SQL Injection, serangan tipe Inferential SQL
Injection membutuhkan waktu yang lebih lama bagi penyerang untuk
melakukan eksploitasi. Pada serangan tipe ini, tidak ada data yang
ditransfer melalui aplikasi web dan penyerang tidak dapat mengetahui
hasil dari serangan melalui kanal komunikasi yang digunakannya. Hal
ini lah yang menyebabkan tipe SQL Injection ini juga dikenal sebagai
“Blind SQL Injection”.
Dalam melancarkan serangan SQL Injection tipe ini, penyerang dapat
merekonstruksi struktur database dengan cara mengirimkan payload,

Versi 1.3 7
melakukan observasi terhadap respon dari aplikasi web, dan perilaku
yang ditunjukkan oleh server database. Terdapat dua tipe inferential
SQL Injection, yaitu
a. Blind-boolean-based SQL Injection. Teknik ini merupakan salah
satu teknik yang bergantung pada pengiriman query SQL ke
database yang memaksa aplikasi untuk mengirimkan nilai balikan
yang berbeda bergantung pada apakah query balikan yang
diberikan TRUE atau FALSE. Teknik serangan ini umumnya sangat
lambat (khususnya pada database dengan skala yang besar)
karena penyerang akan melakukan enumersi terhadap database,
karakter per karakter.
b. Blind-time-based SQL Injection. Teknik in merupakan teknik
inferensia yang bergantung pada pengiriman query SQL ke
database yang memaksa database untuk menunggu dalam rentang
waktu tertentu (dalam detik) sebelum melakukan response. Waktu
response tersebut akan mengindikasikan kepada penyerang hasil
query yang dilakukan TRUE atau FALSE. Bergantung pada nilai
balikan yang dihasilkan, response HTTP akan dikembalikan dengan
jeda atau dikembalikan dengan segera. Hal ini memungkinkan
penyerang untuk menyimpulkan jika payload yang digunakan
menghasilkan nilai balikan TRUE atau FALSE meskipun tidak ada
data yang diperoleh dari nilai balikan dari database. Teknik
serangan ini umumnya sangat lambat (khususnya pada database
dengan skala yang besar) karena penyerang akan melakukan
enumersi terhadap database, karakter per karakter.

3. Out-of-band SQL Injection


Tipe SQL Injection ini termasuk jarang ditemukan karena bergantung
pada fitur yang diaktifkan oleh server database yang digunakan oleh
aplikasi web. Out-of-band SQL Injection terjadi saat seorang

Versi 1.3 8
penyerang tidak dapat menggunakan kanal komunikasi yang sama
untuk melancarkan serangan dan memperoleh hasil serangannya.
Tipe serangan SQL Injection ini menjadi alternatif teknik inferential
time-based bagi penyerang, terutama jika respon dari server tidak
stabil. Tipe Out-of-band SQL Injection bergantung kepada
kemampuan server database untuk membuat request DNS atau HTTP
untuk mengirimkan data kepada penyerang.

BAGAIMANA CARA SERANGAN SQL INJECTION BEKERJA


Secara umum untuk melakukan serangan dengan teknik SQL Injection umumnya
penyerang menjalankan dua tahapan proses yaitu [1]:
1. Tahapan Riset. Penyerang umumnya melakukan riset dengan mengirimkan berbagai
macam nilai yang tidak diharapkan sebagai argumen input, kemudian dia mempelajari
respon dari aplikasi, kemudian dia menentukan apakah target URL rentan atau tidak
terhadap SQL Injection.
2. Tahap Serangan. Setelah melakukan riset mengenai kerentanan pada aplikasi, maka
pada tahapan ini penyerang membuat payload tertentu sebagai nilai input dari
argumen sehingga payload tersebut akan diinterpretasikan sebagai bagian dari
perintah SQL ketimbang hanya data. Kemudian database melakukan eksekusi terhadap
perintah yang telah dibuat oleh penyerang.

Berikut ini merupakan ilustrasi singkat mengenai bagaimana serangan SQL Injection
bekerja.

Versi 1.3 9
Gambar 3 – Ilustrasi Serangan SQL Injection [2]

Serangan SQL Injection terjadi karena aplikasi web yang tidak melakukan validasi
terhadap nilai yang diterima dari formulir isian pada web, cookie, parameter input, dan
lainnya sebelum melewatkan nilai tersebut ke query SQL yang akan dieksekusi pada server
database. Dengan demikian, hal ini memungkinkan penyerang untuk memanipulasi input
sehingga data yang dikirimkan dapat diinterpretasikan sebagai kode/perintah SQL
ketimbang sebagai data.
Berikut merupakan contoh sederhana dari teknik serangan SQL Injection. SQL statement
dinamis umumnya dikonstruksi pada saat eksekusi dilakukan, misalkan contoh berikut
ditulis dalam bahasa pemrograman .NET dimana parameter input harus diisikan oleh
pengguna

Versi 1.3 10
Query = "SELECT * FROM users WHERE username = ' "
+request.getParameter("input")+ " ' " ;

Maka baris kode tersebut akan menjalankan perintah query SQL sebagai berikut:

SELECT * FROM users WHERE username = ‘input’

Salah satu teknik yang umum dilakukan oleh penyerang adalah dengan melakukan
manipulasi terhadap SQL statement, dimana penyerang berupaya memodifikasi SQL query
statements dan menyisipkan “exploited statements” ke dalam database.

SELECT * FROM users WHERE loginName = '$user' AND loginPassword = '$password'

Lalu apa yang akan terjadi jika pengguna memasukan nilai berikut:

$user = ‘ OR ‘1’ = ‘1
$password = ‘ OR ‘1’= ‘1

Karena nilai 1=1 memiliki arti selalu menghasilkan nilai benar atau TRUE, maka query
tersebut akan berhasil dieksekusi meskipun tidak ada username dan password yang valid
yang dimasukan, dengan demikian penyerang berhasil mem-bypass mekanisme
otentikasi. Versi lainnya dari serangan ini adalan dengan menyisipkan dua karakter dash
secara berurutan (--) atau karakter # yang oleh database MySQL dianggap sebagai
penanda bagian komentar sehingga baris perintah setelahnya akan diabaikan.

SELECT *
FROM Users
WHERE loginName = ‘ John ‘ - -
AND Password = anything

SELECT *
FROM Customers
WHERE AccNumber = 1 OR 1 = 1 #
AND Pin = anything

Versi 1.3 11
Dengan demikian penyerang dapat mem-bypass mekanisme otentikasi, karena perintah
setelah (--) atau # yakni AND Pin = anything akan dianggap sebagai baris komentar
oleh database.

INSIDEN SIBER TERKAIT SQL INJECTION


MOSSACK FONSECA (PANAMA PAPERS) [3] [4]

Gambar 3 - Insiden Mossack Fonseca (Panama Papers)


Pada tahun 2016, Mossack Fonseca yang merupakan sebuah firma hukum asal Panama
mengalami insiden kebocoran data (data breach) yang menyebabkan 11,5 juta dokumen
rahasia sebesar 2,6 TB milik firma tersebut terekspos ke publik.

Versi 1.3 12
Kebocoran data yang pada insiden Panama
Papers ini bermula dari hacker yang
memanfaatkan sebuah kerentanan SQL
Injection yang terdapat pada Content
Management System (CMS) Drupal yang
digunakan pada portal web firma hukum
tersebut.

Dokumen rahasia yang bocor dalam insiden


ini dikenal sebagai “Panama Papers” dan
berisi bagaimana pengguna jasa Mossack Gambar 4 - Pemberitaan mengenai Panama
Papers
Fonseca yang banyak diantaranya
merupakan tokoh-tokoh penting di dunia
menghindari pajak. Insiden yang terjadi pada
Mossack Fonseca ini menyebabkan runtuhnya
reputasi Mossack Fonseca dan dampak
finansial bagi firma hukum tersebut sehingga
akhirnya pada 14 Maret 2018 Mossack
Fonseca mengumumkan berhenti beroperasi.

Gambar 6 - SQL Injection disebutkan sebagai


penyebab insiden “Panama Paper”

Gambar 5 - Pemberitaan mengenai penghentian operasi


Mossack Fonseca

Versi 1.3 13
WORLD ANTI-DOPING AGENCY [5]

Gambar 7 - Insiden siber pada WADA

Pada September 2016, World Anti-Doping Agency (WADA) menkonfirmasi sebuah insiden
siber yang dilakukan oleh grup espionase siber asal Rusia yang dikenal sebagai Tsar Team
atau APT28. Grup ini diketahui memperoleh ilegal akses ke dalam database Sistem
Manajemen dan Administrasi Anti-Doping (ADAMS) milik WADA menggunakan akun yang
dibuat oleh International Olympic Committee (IOC) untuk Olimpiade Rio 2016.

Insiden siber yang terjadi pada


WADA ini diketahui dilakukan
dalam dua tahapan serangan.
Pada tahapan pertama,
penyerang menggunakan SQL
Injection untuk mencuri alamat
email dan password dari server
yang dimiliki oleh WADA.
Gambar 8 - Pengumuman insiden siber pada halaman web WADA
Informasi mengenai alamat
email dan password ini kemudian digunakan untuk melakukan serangan spearphishing
kepada personil WADA dengan tujuan untuk mencuri kredensial untuk masuk ke dalam
sistem yang menyimpan rekam medis pribadi milik atlet.

Versi 1.3 14
Dampak dari serangan siber yang
ditujukan ke sistem ADAMS milik
WADA ini adalah sejumlah
informasi rekam medis pribadi
milik atlet bocor dan dipublikasi
kepada publik. Hal ini menjadi
sebuah kontroversi karena
terdapat sejumlah atlet yang
diberikan kompensasi berupa ijin
untuk menggunakan obat-obatan
yang tergolong sebagai doping
pada saat bertanding karena
alasan kesehatan atlet tersebut.
Gambar 9 - Artikel yang menyebutkan kebocoran akun dan
password pada server WADA akibat SQL Injection

PHILIPPINES COMMISION ON ELECTIONS (COMELEC) [6] [7]

Gambar 10 - Insiden pada COMELEC

Pada bulan Maret 2016, grup hacker yang menamakan dirinya sebagai “Anonymous
Philippines” meretas masuk ke dalam situs web dari Komisi Pemilihan Umum Filipina
(COMELEC) dan melakukan deface terhadap situs web tersebut. Pada hari yang sama,

Versi 1.3 15
grup hacker “LulzSec Pilipinas” mempublikasikan sebuah link online yang diklaim berisikan
keseluruhan database COMELEC yang berisi 55 juta informasi pribadi pemilih terdaftar
sebesar 340 GB.

Insiden siber yang menyebabkan


kebocoran data pemilih Filipina ini
diketahui berkaitan dengan
kerentanan SQL Injection yang
terdapat pada sistem yang
menyimpan jutaan data pribadi
pemilih terdaftar. Akibat dari insiden
ini adalah 55 juta informasi pribadi,
seperti informasi biometrik dan
Gambar 12 - Insiden data breach COMELEC
nomor paspor pemillih terdaftar yang
merupakan warga Filipina diketahui
oleh pihak yang tidak berhak.
Informasi pribadi yang bocor ini
berpotensi disalahgunakan oleh
pihak yang tidak bertanggung jawab
misalnya untuk tujuan pemalsuan
Gambar 11 - Tweet kelompok yang membocorkan data pemilih
identitas maupun pemerasan atau dari server COMELEC
penipuan.

Versi 1.3 16
QATAR NATIONAL BANK [8]

Gambar 13 - Insiden Qatar National Bank

Pada bulan Juli 2015, kelompok hacker diketahui mulai menyerang Qatar National Bank
(QNB) hingga menyebabkan kebocoran informasi sebesar 1,4 GB. Informasi yang
dibocorkan diketahui dipublikasi secara online oleh penyerang dan berisi informasi pribadi
dari nasabah QNB, termasuk di dalamnya nasabah yang merupakan pemerintah kerajaan
Qatar dan pejabat pemerintahan. Informasi yang dibocorkan juga berisi detail riwayat
transaksi perbankan dari nasabah, termasuk transaksi luar negeri.

Jika melihat pengaturan file dari


informasi yang dibocorkan, dimana
file-file disusun ke dalam tiga high-
level folder, yaitu ‘Backup’, ‘Files’,
dan ‘Folders’, maka insiden siber
pada QNB ini dapat disimpulkan
diperoleh melalui serangan SQL
Injection menggunakan tools SQL
Injection berbasis open source.
Meskipun terdapat ribuan akun Gambar 14 - Pemberitaan mengenai insiden yang terjadi di
QNB
nasaban QNB yang dibocorkan,

Versi 1.3 17
insiden yang dialami oleh QNB diperkirakan tidak ditujukan untuk memperoleh
keuntungan finansial, melainkan untuk menurunkan reputasi dan membuat malu QNB dan
sejumlah orang-orang penting yang informasi pribadi dan transaksi perbankan miliknya
dipublikasikan oleh pelaku serangan.

PENCEGAHAN TERHADAP SERANGAN SQL INJECTION


Berikut merupakan beberapa langkah pencegahan yang dapat dilakukan untuk mengatasi
serangan SQL Injection, yaitu:

MENGGUNAKAN PARAMETERIZED SQL QUERY


#1 Menggunakan parameterized query atau prepared statement merupakan
salah satu teknik sederhana dan dapat dikatakan mudah untuk dilakukan.
Penggunaan parameterized query ditujukan agar database dapat
membedakan mana yang merupakan SQL statement dan mana yang
merupakan data yang diinputkan oleh pengguna. Melalui cara ini,
penyerang tidak bisa mengubah isi query, walaupun telah memasukkan
kode SQL saat melakukan input. Berikut merupakan contoh penggunaan
prepare statement pada bahasa pemrograman PHP.

Melalui mekanisme ini, data yang dikirimkan oleh pengguna akan


menggantikan parameter yang berada di dalam tanda kurung “(?)”, sebagai
parameter data yang diinputkan oleh pengguna.

Versi 1.3 18
LAKUKAN PENGECEKAN POLA (PATTERN CHECK) : VALIDASI INPUT DATA
#2 DENGAN MENGGUNAKAN REGULAR EXPRESSION
Secara umum terdapat dua hal yang dapat dilakukan untuk melakukan
validasi input, yakni
a. Melakukan Whitelist. Hanya menerima input data yang memang
benar-benar diketahui baik. Beberapa hal yang perlu menjadi
pertimbangan melalui cara ini antara lain nilai yang diizinkan, tipe data,
ukuran data, data range, konten dari data.
b. Melakukan Blacklisting. Hanya menolak input data yang memang
benar-benar diketahui tidak baik. Hal yang dapat dilakukan pada teknik
ini yakni menolak input yang mengandung konten berbahaya. Misalkan
seperti contoh berikut:

Memberikan batasan hak akses untuk membatasi kerusakan yang terjadi


akibat SQL injection. Jangan sesekali Anda login ke database menggunakan
akses admin sebagai root. Namun, Anda dapat menggunakan akses
istimewa yang telah ditentukan untuk membatasi ruang lingkup sistem.

TAMBAHKAN ESCAPE KARAKTER


#3 Tambahkan escape karaketer yang memiliki makna khusus di SQL. Misalkan
karakter yang memiliki memiliki makna khusus di SQL yakni single quote
(‘) di dalam paramater dapat diinterpretasikan sebagai dua single quotes
(‘’). Maka untuk menghindari kesalahan eksekusi dalam database,
tambahkan karakter escape seperti back slash, misal (\’). Sehingga
karakter single quote akan tetap diartikan sebagai single quote oleh
database.

Versi 1.3 19
MENONAKTIFKAN INFORMASI PESAN KESALAHAN APLIKASI (ERROR)
#4 Salah satu kebiasaan yang kerap kali dilakukan oleh pengembang aplikasi
pada saat masa pengembangan adalah mengaktifkan mode debug guna
memudahkan pengembang dalam menemukan kesalahan dalam aplikasi
yang dikembangkannya. Namun kerap kali pengembang lupa untuk menon
aktifkan mode debug pada saat aplikasi memasuki masa penggunaan
(production). Sehingga hal ini kerap kali menjadi keuntungan bagi
penyerang dengan teknik SQL injection untuk mengetahui parameter URL
mana yang rentan terhadap serangan ini. Sehingga untuk menghindari hal
ini, cukup non-aktifkan mode debug pada aplikasi untuk mencegah pesan
error yang ditampilkan dimanfaatkan oleh pihak penyerang.

AMANKAN DATABASE YANG DIGUNAKAN


#5 Beberapa cara yang dapat digunakan untuk mengamankan database yang
digunakan antara lain:
a. Definisikan dengan baik hak akses dari pengguna yang mengakses
database serta berikan hak akses terhadap pengguna sesuai dengan hak
akses yang diperlukannya (least privileged).
b. Gunakan teknik enkripsi untuk mengamankan data anda yang tersimpan
di dalam database. Hal ini bertujuan agar ketika data anda berhasil dicuri
oleh penyerang, maka penyerang tidak mendapatkan informasi apapun
mengenai data yang tersimpan.
c. Non aktifkan akses dari publik untuk mengakses database anda.
d. Lakukan penggantian password secara berkala untuk akun yang
digunakan untuk mengakses database.

Versi 1.3 20
LAKUKAN PENGUJIAN KEAMANAN APLIKASI SECARA BERKALA
#6 Hal ini bertujuan agar celah keamanan terkait aplikasi yang digunakan
dapat diketahui secara dini, dengan demikian langkah preventif ataupun
perbaikan terhadap celah keamanan tersebut dapat segera dilakukan.

GUNAKAN PERANGKAT KEAMANAN WEB APPLICATION FIREWALL


#7 Hal ini bertujuan untuk mendeteksi dan meblok serangan SQL Injection
berjalan sukses pada aplikasi anda.

Demikian beberapa cara pencegahan yang bisa Anda lakukan agar terhindar dari serangan
SQL injection. Selain itu, pastikan juga bahwa aplikasi web yang Anda bangun telah lulus
SQL injection vulnerability test.

Semoga artikel diatas bermanfaat bagi dan dapat membantu Anda untuk lebih
meningkatkan keamanan aplikasi anda dari serangan SQL Injection.

REFERENSI

[1] D. P. IIKN, "Laporan Voluntary Vulnerability Disclosure Program (VVDP)," BSSN,


Jakarta, 2018.
[2] Veracode, "SQL Injection: Vulnerabilities & How To Prevent SQL Injection
Attacks," NA NA NA. [Online]. Available: https://www.veracode.com/security/sql-
injection.
[3] R. H. Randy Connolly, "Working with Databases," in Fundamentals of Web
Developments , Pearson, 2015.
[4] N. Slawson, "Mossack Fonseca law firm to shut down after Panama Papers tax
scandal," The Guardian, 14 March 2018. [Online]. Available:

Versi 1.3 21
https://www.theguardian.com/world/2018/mar/14/mossack-fonseca-shut-
down-panama-papers. [Accessed 05 2019].
[5] J. Leyden, "SQL injection vuln found at Panama Papers firm Mossack Fonseca,"
The Register, 11 April 2016. [Online]. Available:
https://www.theregister.co.uk/2016/04/11/hackers_pwn_mossack_fonseca/.
[Accessed May 2019].
[6] W. A. D. Agency, "WADA Confirms Attack by Russian Cyber Espionage Group,"
World Anti Doping Agency, 13 September 2016. [Online]. Available:
https://www.wada-ama.org/en/media/news/2016-09/wada-confirms-attack-by-
russian-cyber-espionage-group. [Accessed May 2019].
[7] S. Panela, "Inside Comelec’s Hacked Website," stack.com, 18 July 2016. [Online].
Available: http://www.stack.com.ph/comelec-hacked-website/. [Accessed May
2019].
[8] T. Micro, "Data Protection Mishap Leaves 55M Philippine Voters at Risk," Trend
Micro, 6 April 2016. [Online]. Available: https://blog.trendmicro.com/trendlabs-
security-intelligence/55m-registered-voters-risk-philippine-commission-elections-
hacked/. [Accessed May 2019].
[9] P. Muncaster, "Qatar Bank Hackers Got in Via SQLi – Expert," Infosecurity
Magazine, 28 April 2016. [Online]. Available: https://www.infosecurity-
magazine.com/news/qatar-bank-hackers-got-in-via-sqli/. [Accessed May 2019].
[10] S. Edwards, "Qatar Bank Breach Lifts the Veil on Targeted Attack Strategies,"
Trend Micro, 27 April 2016. [Online]. Available:
http://blog.trendmicro.co.uk/qatar-bank-breach-lifts-the-veil-on-targeted-attack-
strategies/. [Accessed May 2019].
[11] D. Holmes, "Profile of a Hacker: The Real Sabu, Part 1 of 2," F5, 18 April 2017.
[Online]. Available: https://www.f5.com/labs/articles/threat-intelligence/profile-
of-a-hacker-the-real-sabu-part-1-of-2-26146. [Accessed May 2019].
[12] J. Zorabedian, "SQL Injection Attacks and How to Prevent Them [INFOGRAPHIC],"
Veracode, 22 November 2016. [Online]. Available:

Versi 1.3 22
https://www.veracode.com/blog/intro-appsec/sql-injection-attacks-and-how-
prevent-them-infographic. [Accessed May 2019].
[13] Acunetix, "What is SQL Injection (SQLi) and How to Prevent It," Acunetix, [Online].
Available: https://www.acunetix.com/websitesecurity/sql-injection/. [Accessed
May 2019].
[14] Oracle, "Tutorial on Defending Against SQL Injection Attacks!," Oracle, 2009.
[Online]. Available:
https://download.oracle.com/oll/tutorials/SQLInjection/index.htm. [Accessed
May 2019].
[15] B. Tables, "Bobby Tables: A guide to preventing SQL injection," [Online].
Available: https://bobby-tables.com/. [Accessed May 2019].

Versi 1.3 23

Anda mungkin juga menyukai