Anda di halaman 1dari 4

Prosiding Annual Research Seminar 2017 ISBN : 979-587-705-4

Computer Science and ICT Vol. 3 No. 1

Mengatasi Keamanan di dalam SQL


Injection dan Cara Pencegahannya
M. Andika Saputra Hyoga Hara Kusuma Ali Ibrahim
Sistem informasi Profesional Sistem informasi Profesional Sistem informasi Profesional
Fakultas Ilmu Komputer Fakultas Ilmu Komputer Fakultas Ilmu Komputer
Universitas Sriwijaya Universitas Sriwijaya Universitas Sriwijaya
Dikaa497@gmail.com Hyoga.hk@gmail.com aliibrahim@ilkom.unsri.ac.id

ABSTRAK- Keamanan merupakan faktor penting sebagai:


dalam membantu pembangunan website. Banyaknya SELECT * from users where User ='' or 1=1-- and
layanan bisnis berupa toko online berbasis web dan Password='foobar'
sebagainya menjadikan keamanan sebagai faktor yang memiliki arti bahwa sql akan men-SELET semua
terpenting untuk dijaga dengan baik. Aplikasi yang
bersifat terbuka dan dapat diakses dengan mudah oleh
-
siapa saja dapat membuat keamanan terancam. Salah - (tanda adalah mark dari SQL).
santu ancaman serangan tersebut yaitu SQL injection
yang merupakan serangan hacker untuk website untuk
memasuki dan mendapatkan akses ke basis data.
Metode yang digunakan SQL injection biasnya
menggunakan form yang terdapat di dalam website yang
tidak dilindungi dengan script khusus.
Kata kunci : SQL Injeksi, Web.

PENDAHULUAN
Gambar 1 : Contoh ilustrasi SQL injection Pada
Saat ini banyak sekali bug bug yang tersebar
admin login area
di dunia maya yang disebabkan oleh ulah para cracker
yang tidak bertanggung jawab. Penyimpanan data
Logika nya adalah bahwa SQL-nya menganggap
terletak pada database yang sering kali digunakan oleh
1=1 sebagai true sehingga kolom itu di-bypass lalu
pengembang website dan pemilik website untuk
kolom password-nya diabaikan karena setelah 1=1
menyimpan seluruh data pada website berupa data
terdapat mark SQL ( -- ), sehingga membuat password
login, data user, dan lain sebagainya. Bagi para
itupun diabaikan. Teknik awal adalah untuk memaksa
pengembang web sudah tidak asing lagi bagi mereka
keluar sebuah halaman error yang berisi informasi
tentang SQL Injection yang merupakan salah satu
dari struktur database sebuah situs. Langkah
bentuk ancaman terbesar bagi website yang sedang
selanjutnya adalah
dikelola. SQL Injection merupakan bentuk serangan
dari para hacker yang dapat menembus celah database
pada suatu website.
kita harus men-debugnya untuk melihat informasi
tersebut. String debugging uang digunakan adalah '
Teknik SQL Injection memungkinkan seseorang
having 1=1-- yang digunakan jika kita ingin melihat
dapat login kedalam sistem dabase tanpa harus
error page pada situs tersebut. Teknik ini dapat
memiliki account dengan cara mengisi default setting
membuat kita masuk ke sistem tanpa mempunyai
SQL. Default setting SQL yang paling berbahaya
akun, bukan hanya itu saja SQL injection dapat
mebuat seseorang menghapus, menambah, atau
(kosong / tidak diisi). Jika default settingnya belum
bahkan merubah data yang ada dalam database.
dirubah maka ketika ada sebuah direktori pada
website yang memiliki form untuk login admin, para
METODELOGI PENELITIAN
hacker dapat masuk kedalam dengan hanya
Metode Penelitian yang dilakukan dalan
(kosong / tidak diisi). Bentuk lain untuk masuk
penulisan makalah ini adalah bersifat literature. SQL
kedalam adalah dengan menggunakan string ' OR 1-1-
Injection merupakan kegiatan yang dilakukan untuk
- pada halaman yang memilikii user dan password.
perintah SQL ditujukan statment SQL yang ada pada
Jika kita memasukan string ' OR 1=1-- di input box
aplikasi yang sedang berjalan. Adapun teknik untuk
user dan memasukan password = foobar di input box
mengeksploitassikan web ini di dalam SQL injection
password, sehingga menagkibatkan SQL Query
yang memiliki database sebagai tempat penyimpanan
menjadi bingung. SQL Query akan membacanya
data. SQL Injection terjadi karena kurangnya

105
Prosiding Annual Research Seminar 2017 ISBN : 979-587-705-4
Computer Science and ICT Vol. 3 No. 1
keamanan pada website tersebut untuk menghandle ketika username dan password yang
suatu inputan pada form login yang umumnya terletak dimasukan benar maka kita akan dialihkan kehalaman
pada username dan password. selanjutnya contoh gambar dapat dilihat dibahawah
ini.

HASIL DAN DISKUSI

SQL Injection disalah gunakan dengan cara


meretas system login web dengan contoh merancang
dengan menggunakan MS SQL Server sebagai tempat
menyimpan data-data. Pada jurnal ini akan merancang
database, membuat script dan SQL Injection sebagai
script yang dibuat. MS SQL Server sebagai
databasenya dan ASP sebagai scripting languange
nya.
Hal Pertama yang harus kita buat yaitu
databasenya. selanjutnya membuat database dengan Pada halaman secured_page.asp pada gambar diatas
nama sqlinjection dan membuat table dengan nama tb- link logout yang berfungsi untuk keluar dari halaman
_user. secured page dan kembali kehalaman login.
Create table tb_user (username varchar(40), password <%
varchar (40)) session.abandon response.redirect "login.asp"
Setelah membuat table Kemudian isikan data kedalam %>
tabel tersebut dengan mengetikan Dengan meletakan file yang telah dibuat pada satu
Insert into tb_user values ('sql', 'inject') folder dan dijadikan sebagai halaman utama. Hasil
Setelah membuat table dan mengisikan table yang kita yang didapat dan dicoba dengan mengetikan URL
buat. Sekarang kita akan membuat interface website yang mengarah langsung pada halaman login
yang bernama 'login.asp' misalnya : http://localhost/login.asp.
SQL Injection dilakukan pada dihalaman login
dengan contoh mengetikan username = 'a' dan
password ='b', secara otomatis program akan kembali
lagi kehalaman login.asp dikeranakan username dan
passwordnya salah. Sekarang ulangi lagi dengan

= 'inject' maka akan otomatis beralih kehalaman


Dilanjutkan dengan membuat script program dengan secured_page.asp dikarenakan username dan
nama login_process.asp. passwordnya benar. Aktivitas yang dilakukan diatas
adalah aktivitas normal yang biasanya dilakukan
<form untuk login kesuatu sistem. Lalu untuk aktivitas tidak
normal adalah dengan melakukan inputan ' (single
quotes) pada bagian username dan sembarang string
<tr> pada bagian password. Maka akan muncul tanda error.
Tanda error merupakan dari database SQL Server
Login</div></td> yang menyatakan adanya kesalahan pada statment
</tr> SQL. Selanjutnya mencoba memasukan string 'OR
<tr> 1=1- pada bagian username dan sembarang string
<td>Username</td> pada password. Hasilnya adalah kita akan dibawa
<td>< kehalaman secured_page.asp tanpa harus mengetahui
</tr> password dan username dengan benar. Hal ini terjadi
<tr> dikerenakan ' (single quote) yang dinputkan pada
<td>Password</td> bagian username. ' (single quote) merupakan karakter
<td><inpu = pemutus dari statment SQL lalu sekarang akan kita
</td> kembangkan untuk membelokan statement asli dari
</tr> SQL sesuai dengan keinginan kita. Misalkan kita
<tr> memasukan username 'dika' dan password = '1234'
ername maka statment SQL yang terjadi adalah :
Select * from tb_user where username = 'dika' dan
<td> </td> password = '1234'
</tr> Jalankan MS Query analyzer maka hasilnya akan
</table> menjadi 0 (zero) dan tidak error. Sekarang kita coba
</form>

106
Prosiding Annual Research Seminar 2017 ISBN : 979-587-705-4
Computer Science and ICT Vol. 3 No. 1
dengan memasukan karakter ' pada bagian username (request.form("username"),"'","''"), hal tersebut juga
dan sebagai password. terjadi pada bagian password. Ada beberapa cara lain
Statment pada database akan seperti ini untuk menanggulanginya yaitu :
Select * from tb_user where username= dan 1. Query SQL
password = '1234' Untuk melindungi QUERY SQL kita dapat
Kemudian coba jalankan MS QUERY Analyzer maka menggunakan teknik sainitasi yaitu
akan muncul error. mengosongkan seluruh inptuan yang
Hal tersebut terjadi dikarenakan kita memotong diterima dari request object ASP. Teknik
statment SQL dengan karakter (single quote). Lalu sanitasi ini sangat berguna untuk penggunaan
kita akan menyelesaikan pemotongan statment dengan RDBMS (Relational Database Management
menambahkan string OR 1 = 1 -- setelah karakter ' System).
pada bagian username dika. Untuk mencegah dan mengatasi ancaman
Statment SQL akan menjadi terhadap SQL Injection, yaitu dengna
Select * from tb_user where username = 'dika' or 1=1- menghindari penggunaan tanda petik tunggal
-' (') dengan menggunakan replace.
Jalankan MS Query Analyzer maka hasilnya akan 2. Pesan Error
menampilkan record set pada tabel tb_user . Hal ini Dengan cara mematikan atau merubah dan
disebabkan karena karakter merupakan karakter mengganti pesan error maka dapat mencegah
untuk menandakan bahwa string setelah tanda -- akan attacker untuk menelusuri jalur database.
di ignore atau ditiadakan. 3. Panjang Input Box
Sehingga statment SQL nya adalah Panjang input box yang dibatasi akan
Select * from tb_user where username = '' or 1=1 membuat hacker pemula menjadi bingung
Perintah tersebut akan memilih username yang terhadap penggunakan code inject yang tidak
berupa karakter kosong dan kemudian di OR pada berfungsi di input box dikerenakan code
kondisi tertentu akan bernilai TRUE. yang panjang.

Menanggulangi SQL Injection Kesimpulan


Untuk menanggulangi SQL Injection cara yang
digunakan biasanya adalah memeriksa setiap karakter Tenik hacking dari SQL Injection merupakan
inputan yang masuk kedalam database menggunakan teknik yang cukup popoler pada website dengan
statment SQL. Pada kasus diatas pencegahan harus prinsip untuk melewati perintah dari statment SQL
dilakukan terhadap karakter ' yang masuk dengan ''. yang di eksekusi oleh database backend. Apabila
Contohnya inputan user tidak disaring dengan sempurna maka
akan sangat mudah untuk hacker menerobos masuk
<% option explicit %> kedalam. Keamanan perlu ditingkatkan dengan cara
<%dim connstring,conn,recset connstring = selalu mengecek code program yang dibuat, kesalahan
"Provider=SQLOLEDB.1; Password=1234; Persist dalam statment SQL dapat memicu terjadinya web
Security Info=True; User ID=sa; Initial tersebut akan mudah diterbos masuk.
Catalog=sqlinject; Data Source=localhost" Kepekaan kita harus ditingkatkan bila ingin
set conn = server.creat eobject ("adodb.connection") melindungi web yang sedang diolah agar kenyamanan
set recset = server.createobject("adodb.recordset") web dan privasi web terjamin dengan sempurna.
conn.open connstring
recset.open "select * from tbUser where username = DAFTAR PUSTAKA
'" & replace(request.form("username"),"'","''") & "' 1. (Mardianto, Sediyono, & Hafzan, 2015)Kusuma, A. (2016).
and password = '" & Teknik Informatika, (8053111074), 1 24.
replace(request.form("password"),"'","''") & Mardianto, I., Sediyono, A., & Hafzan, A. (2015). Analisa
"'",conn,3,2 Kerentanan Sis . Trisakti . Ac . Id Menggunakan Teknik
Vulnerability Scan, 13, 90 101.
if not recset.eof then Serangan, A. K., Metode, B., & Database, K. (2016). Jurnal
response.write recset.recordcount -6313 Jurnal
session("username") = request.form("username") -6313, 4(1),
response.redirect "secured_page.asp" 79 87.
else 2. (Kusuma, 2016)Kusuma, A. (2016). Teknik Informatika,
response.redirect "login.asp" (8053111074), 1 24.
end if Mardianto, I., Sediyono, A., & Hafzan, A. (2015). Analisa
%> Kerentanan Sis . Trisakti . Ac . Id Menggunakan Teknik
Vulnerability Scan, 13, 90 101.
Serangan, A. K., Metode, B., & Database, K. (2016). Jurnal
Perubahan kode diatas terletak pada penginputan -6313 Jurnal
username dan password diganti dengan -6313, 4(1),
79 87.
request.form("username") menjadi replace

107
Prosiding Annual Research Seminar 2017 ISBN : 979-587-705-4
Computer Science and ICT Vol. 3 No. 1
3.(Serangan, Metode, & Database, 2016)Kusuma, A. (2016).
Teknik Informatika, (8053111074), 1 24.
Mardianto, I., Sediyono, A., & Hafzan, A. (2015). Analisa
Kerentanan Sis . Trisakti . Ac . Id Menggunakan Teknik
Vulnerability Scan, 13, 90 101.
Serangan, A. K., Metode, B., & Database, K. (2016). Jurnal
-6313 Jurnal
-6313, 4(1),
79 87.

108

Anda mungkin juga menyukai