SlideShare uma empresa Scribd logo
1 de 10
SQL INJECTION ATTACK AND
COUNTERMEASURE
By Zulfadlil
1. PENGERTIAN SQL INJECTION
SQL injection adalah jenis aksi hacking pada keamanan komputer di mana
seorang penyerang bisa mendapatkan akses ke basis data di dalam sistem. SQL
injection yaitu serangan yang mirip dengan serangan XSS dalam bahwa penyerang
memanfaatkan aplikasi vektor dan juga dengan common dalam serangan XSS.
Sql injection merupakan salah satu kelemahan yang paling dahsyat untuk
dampak bisnis, karena dapat menyebabkan pembongkaran semua informasi yang
sensitif yang tersimpan dalam sebuah aplikasi database, termasuk informasi berguna
seperti username, password, nama, alamat, nomor telepon, dan rincian kartu kredit.
Jadi SQL injection adalah kelemahan yang diterjadi ketika penyerang mampu
mengubah structured query language (SQL) di dalam database. Dengan mempengaruhi
database, penyerang dapat memanfaatkan sintaks dan kemampuan dari SQL itu sendiri,
serta kekuatan dan fleksibilitas yang mendukung fungsi database dan fungsi sistem
operasi yang hanya dilakukan dalam database.
2. SEJARAH SQL INJECTION
Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama EF codd yang
membahas tentang ide pembuatan basis data relasional pada bulan juni1970. Artikel ini juga
membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data
tersebut. Bahasa tersebut kemudian diberi nama SEQUEL (structured english query
language). Setelah terbitnya artikel tersebut, IBM mengadakan proyek pembuatan basis data
relasional berbasis bahasa SEQUEL. Akan tetapi, karena permasalahan hukum mengenai
penamaan SEQUEL, IBM pun mengubahnya menjadi SQL.
Di akhir tahun 1970-an, muncul perusahaan bernama oracle yang membuat server basis
data populer yang bernama sama dengan nama perusahaannya. Dengan naiknya kepopuleran
oracle, maka SQL juga ikut populer sehingga saat ini menjadi standar de facto bahasa dalam
manajemen basis data. Standarisasi SQL dimulai pada tahun 1986, ditandai dengan
dikeluarkannya standar SQL oleh ANSI. Standar ini sering disebut dengan SQL86.Standar
tersebut kemudian diperbaiki pada tahun 1989 kemudian diperbaiki lagi pada tahun 1992.
Versi terakhir dikenal dengan SQL92.
Pada tahun 1999 dikeluarkan standar baru yaitu SQL99 atau disebut juga SQL99,
akan tetapi kebanyakan implementasi mereferensi pada SQL92. Saat ini sebenarnya tidak ada
server basis data yang 100% mendukung SQL92. Hal ini disebabkan masing-masing server
memiliki dialek masing-masing. Secara umum, SQL terdiri dari dua bahasa, yaitu data
definition language (DDL) dan data manipulation language (DML). Implementasi DDL dan
DML berbeda untuk tiap sistem manajemen basis data (SMBD), namun secara umum
implementasi tiap bahasa ini memiliki bentuk standar yang ditetapkan ANSI. Artikel ini akan
menggunakan bentuk paling umum yang dapat digunakan pada kebanyakan SMBD.
3. CARA KERJA SQL INJECTION
SQL injection merupakan serangan dimana kode SQL dimasukkan atau ditambahkan
ke dalam aplikasi/ user input parameter yang kemudian diteruskan ke SQL server back-end
untuk parsing dan eksekusi. Setiap prosedur yang membangun pernyataan SQL berpotensi
untuk mudah terserang. Bentuk injeksi utama SQL terdiri dari penyisipan langsung kode ke
dalam parameter yang digabungkan dengan perintah SQL dan kemudian dieksekusi. Sebuah
serangan langsung paling sedikit menyuntikan kode ke dalam string yang ditujukan ke
penyimpanan di dalam tabel atau sebagai metadata. Ketika string yang tersimpan akhirnya
digabungkan ke dalam perintah SQL dinamis, kode tersebut akan dieksekusi.
Ketika aplikasi web gagal untuk membersihkan paramater dengan benar dilewatkan ke
pernyataan SQL yang dibuat secara dinamis (bahkan ketika menggunakan teknik
parameterisasi) ini memungkinkan untuk seorang penyerang untuk mengubah mengubah
konstruksi back-end SQL.
Ketika seorang penyerang dapat memodifikasi pernyataan SQL, pernyataan tersebut
akan dieksekusi dengan hak yang sama dengan aplikasi pengguna, saat menggunakan server
SQL untuk mengeksekusi perintah yang berinteraksi dengan sistem operasi, proses akan
berjalan dengan hak akses yang sama dengan komponen yang mengeksekusi perintah
(misalnya database server, aplikasi server, atau web server).
Berikut vidio mode
penyerangan sql injection;
4. TAHAPAN PENYERANGAN SQL INJECTION
2) Menentukan jumlah kolom
Penentuan jumlah kolom ini perlu dilakukan karena kita perlu mengetahui kolom mana dari sebuah
tabel yang bisa dimanfaatkan. Hal ini bertujuan supaya kita bisa memasukkan perintah SQL injection
pada lokasi yang tepat. Sebab kalau kita memasukkan di tempat yang salah maka kita tidak akan
memperoleh apapun. Untuk melakukan hal ini agak bersifat “trial and error”, dimana perintah yang
digunakan adalah ORDER BY.
1) Tes vulnerabilitas
Pengujian atau tes ini perlu dilakukan untuk mengetahui
apakah sebuah situs web memiliki celah keamanan atau tidak untuk
dilakukan SQL injection. Salah satu karakter yang sering digunakan
untuk melakukan vulnerabilitas adalah pemakaian karakter kutip
tunggal (‘)
3) Mencari kolom yang vunerable
S e l a n j u t n y a a d a l a h m e n c a r i k o l o m y a n g m e m i l i k i
c e l a h u n t u k d i l a k u k a n S Q L i n j e c t i o n . I s t i l a h l a i n n y a
a d a l a h a n g k a e r r o r .
4) Menentukan nama database
P a d a d a s a r n y a i n i b u k a n l a h s e s u a t u y a n g p e n t i n g
t a p i a k a n l e b i h b a i k a g a r b i s a d i m a n f a a t k a n u n t u k
k e p e n t i n g a n l a i n
5) Mencari nama kolom
6) Menampilkan isi data
5. MENCEGAH SQL INJECTION
1. Batasi panjang input box dengan cara membatasi di kode program.
2. Administrator web haruslah tegas menolak user yang menginput karakter selain
abjad dan angka.
3. Untuk nilai numerik, konversilah menjadi integer.
4. Filter input yang dimasukkan user.
5. Jika memungkinkan, buatlah daftar karakter yang boleh digunakan.
6. Batasi karakter yang boleh diinput oleh pengunjung situs web anda.
7. Matikan atau sembunyikan pesan – pesan error yang keluar dari sql server yang
berjalan.
8. Kalau bisa, hilangkan show error mysql.
9. Bagi yang menggunakan cms, sangat disarankan untuk mengupdate cms.
Aksi penyerangan SQL dan penjegahan

Mais conteúdo relacionado

Semelhante a Aksi penyerangan SQL dan penjegahan

Tugas makalah 4 ka34 pemograman generasi ke 4
Tugas makalah 4 ka34 pemograman generasi ke 4Tugas makalah 4 ka34 pemograman generasi ke 4
Tugas makalah 4 ka34 pemograman generasi ke 4Maulana Rocky
 
Zulkifli 201613012_tugas 5
Zulkifli 201613012_tugas 5Zulkifli 201613012_tugas 5
Zulkifli 201613012_tugas 5zulk ifli
 
Tutorial sql injection 23206054
Tutorial sql injection 23206054Tutorial sql injection 23206054
Tutorial sql injection 23206054Mohammad Haris
 
Laporan Pembuatan aplikasi persediaan barang
Laporan Pembuatan aplikasi persediaan barangLaporan Pembuatan aplikasi persediaan barang
Laporan Pembuatan aplikasi persediaan barangTaqwa nuddin
 
Audit Trail Comparison Oracle & PostgreSQL
Audit Trail Comparison Oracle & PostgreSQLAudit Trail Comparison Oracle & PostgreSQL
Audit Trail Comparison Oracle & PostgreSQLNein Raka
 
Nordrassil project web pembangkit ddl dan kode sumber aplikasi basis data
Nordrassil project  web pembangkit ddl dan kode sumber aplikasi basis dataNordrassil project  web pembangkit ddl dan kode sumber aplikasi basis data
Nordrassil project web pembangkit ddl dan kode sumber aplikasi basis dataTri Y. Evelina
 
PEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASEPEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASERäjù GùÑáwàn
 
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...Devi Apriansyah
 
Kelebihan dan kekurangan database engine
Kelebihan dan kekurangan database engineKelebihan dan kekurangan database engine
Kelebihan dan kekurangan database engineroji muhidin
 
Laporan Pemrograman API XML dengan PHP-MySQL (Lukie Perdanasari - 1110651187)
Laporan Pemrograman API XML dengan PHP-MySQL (Lukie Perdanasari - 1110651187)Laporan Pemrograman API XML dengan PHP-MySQL (Lukie Perdanasari - 1110651187)
Laporan Pemrograman API XML dengan PHP-MySQL (Lukie Perdanasari - 1110651187)QyeChildist Parth-ll
 
Tugas4 0317-nasrulakbar-141250552
Tugas4 0317-nasrulakbar-141250552Tugas4 0317-nasrulakbar-141250552
Tugas4 0317-nasrulakbar-141250552Nasrul Akbar
 
Pembuatan tabel dalam database
Pembuatan tabel dalam databasePembuatan tabel dalam database
Pembuatan tabel dalam databasedefriharmegi
 
Modul praktikum basis data
Modul praktikum basis dataModul praktikum basis data
Modul praktikum basis datahairul anwar
 
Bab12 backup dan restore basis data
Bab12 backup dan restore basis dataBab12 backup dan restore basis data
Bab12 backup dan restore basis dataAgung Sakepris
 

Semelhante a Aksi penyerangan SQL dan penjegahan (20)

Tugas makalah 4 ka34 pemograman generasi ke 4
Tugas makalah 4 ka34 pemograman generasi ke 4Tugas makalah 4 ka34 pemograman generasi ke 4
Tugas makalah 4 ka34 pemograman generasi ke 4
 
Mysql
MysqlMysql
Mysql
 
Zulkifli 201613012_tugas 5
Zulkifli 201613012_tugas 5Zulkifli 201613012_tugas 5
Zulkifli 201613012_tugas 5
 
Management database
Management databaseManagement database
Management database
 
Tutorial sql injection 23206054
Tutorial sql injection 23206054Tutorial sql injection 23206054
Tutorial sql injection 23206054
 
Makalah database
Makalah databaseMakalah database
Makalah database
 
Sony (misconfig)
Sony (misconfig)Sony (misconfig)
Sony (misconfig)
 
Laporan Pembuatan aplikasi persediaan barang
Laporan Pembuatan aplikasi persediaan barangLaporan Pembuatan aplikasi persediaan barang
Laporan Pembuatan aplikasi persediaan barang
 
Bab ii
Bab iiBab ii
Bab ii
 
Audit Trail Comparison Oracle & PostgreSQL
Audit Trail Comparison Oracle & PostgreSQLAudit Trail Comparison Oracle & PostgreSQL
Audit Trail Comparison Oracle & PostgreSQL
 
Nordrassil project web pembangkit ddl dan kode sumber aplikasi basis data
Nordrassil project  web pembangkit ddl dan kode sumber aplikasi basis dataNordrassil project  web pembangkit ddl dan kode sumber aplikasi basis data
Nordrassil project web pembangkit ddl dan kode sumber aplikasi basis data
 
PEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASEPEMBUATAN TABEL DALAM DATABASE
PEMBUATAN TABEL DALAM DATABASE
 
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
 
Kelebihan dan kekurangan database engine
Kelebihan dan kekurangan database engineKelebihan dan kekurangan database engine
Kelebihan dan kekurangan database engine
 
Choirul (client-01)
Choirul (client-01)Choirul (client-01)
Choirul (client-01)
 
Laporan Pemrograman API XML dengan PHP-MySQL (Lukie Perdanasari - 1110651187)
Laporan Pemrograman API XML dengan PHP-MySQL (Lukie Perdanasari - 1110651187)Laporan Pemrograman API XML dengan PHP-MySQL (Lukie Perdanasari - 1110651187)
Laporan Pemrograman API XML dengan PHP-MySQL (Lukie Perdanasari - 1110651187)
 
Tugas4 0317-nasrulakbar-141250552
Tugas4 0317-nasrulakbar-141250552Tugas4 0317-nasrulakbar-141250552
Tugas4 0317-nasrulakbar-141250552
 
Pembuatan tabel dalam database
Pembuatan tabel dalam databasePembuatan tabel dalam database
Pembuatan tabel dalam database
 
Modul praktikum basis data
Modul praktikum basis dataModul praktikum basis data
Modul praktikum basis data
 
Bab12 backup dan restore basis data
Bab12 backup dan restore basis dataBab12 backup dan restore basis data
Bab12 backup dan restore basis data
 

Aksi penyerangan SQL dan penjegahan

  • 1. SQL INJECTION ATTACK AND COUNTERMEASURE By Zulfadlil
  • 2. 1. PENGERTIAN SQL INJECTION SQL injection adalah jenis aksi hacking pada keamanan komputer di mana seorang penyerang bisa mendapatkan akses ke basis data di dalam sistem. SQL injection yaitu serangan yang mirip dengan serangan XSS dalam bahwa penyerang memanfaatkan aplikasi vektor dan juga dengan common dalam serangan XSS. Sql injection merupakan salah satu kelemahan yang paling dahsyat untuk dampak bisnis, karena dapat menyebabkan pembongkaran semua informasi yang sensitif yang tersimpan dalam sebuah aplikasi database, termasuk informasi berguna seperti username, password, nama, alamat, nomor telepon, dan rincian kartu kredit. Jadi SQL injection adalah kelemahan yang diterjadi ketika penyerang mampu mengubah structured query language (SQL) di dalam database. Dengan mempengaruhi database, penyerang dapat memanfaatkan sintaks dan kemampuan dari SQL itu sendiri, serta kekuatan dan fleksibilitas yang mendukung fungsi database dan fungsi sistem operasi yang hanya dilakukan dalam database.
  • 3. 2. SEJARAH SQL INJECTION Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama EF codd yang membahas tentang ide pembuatan basis data relasional pada bulan juni1970. Artikel ini juga membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data tersebut. Bahasa tersebut kemudian diberi nama SEQUEL (structured english query language). Setelah terbitnya artikel tersebut, IBM mengadakan proyek pembuatan basis data relasional berbasis bahasa SEQUEL. Akan tetapi, karena permasalahan hukum mengenai penamaan SEQUEL, IBM pun mengubahnya menjadi SQL. Di akhir tahun 1970-an, muncul perusahaan bernama oracle yang membuat server basis data populer yang bernama sama dengan nama perusahaannya. Dengan naiknya kepopuleran oracle, maka SQL juga ikut populer sehingga saat ini menjadi standar de facto bahasa dalam manajemen basis data. Standarisasi SQL dimulai pada tahun 1986, ditandai dengan dikeluarkannya standar SQL oleh ANSI. Standar ini sering disebut dengan SQL86.Standar tersebut kemudian diperbaiki pada tahun 1989 kemudian diperbaiki lagi pada tahun 1992. Versi terakhir dikenal dengan SQL92.
  • 4. Pada tahun 1999 dikeluarkan standar baru yaitu SQL99 atau disebut juga SQL99, akan tetapi kebanyakan implementasi mereferensi pada SQL92. Saat ini sebenarnya tidak ada server basis data yang 100% mendukung SQL92. Hal ini disebabkan masing-masing server memiliki dialek masing-masing. Secara umum, SQL terdiri dari dua bahasa, yaitu data definition language (DDL) dan data manipulation language (DML). Implementasi DDL dan DML berbeda untuk tiap sistem manajemen basis data (SMBD), namun secara umum implementasi tiap bahasa ini memiliki bentuk standar yang ditetapkan ANSI. Artikel ini akan menggunakan bentuk paling umum yang dapat digunakan pada kebanyakan SMBD.
  • 5. 3. CARA KERJA SQL INJECTION SQL injection merupakan serangan dimana kode SQL dimasukkan atau ditambahkan ke dalam aplikasi/ user input parameter yang kemudian diteruskan ke SQL server back-end untuk parsing dan eksekusi. Setiap prosedur yang membangun pernyataan SQL berpotensi untuk mudah terserang. Bentuk injeksi utama SQL terdiri dari penyisipan langsung kode ke dalam parameter yang digabungkan dengan perintah SQL dan kemudian dieksekusi. Sebuah serangan langsung paling sedikit menyuntikan kode ke dalam string yang ditujukan ke penyimpanan di dalam tabel atau sebagai metadata. Ketika string yang tersimpan akhirnya digabungkan ke dalam perintah SQL dinamis, kode tersebut akan dieksekusi. Ketika aplikasi web gagal untuk membersihkan paramater dengan benar dilewatkan ke pernyataan SQL yang dibuat secara dinamis (bahkan ketika menggunakan teknik parameterisasi) ini memungkinkan untuk seorang penyerang untuk mengubah mengubah konstruksi back-end SQL.
  • 6. Ketika seorang penyerang dapat memodifikasi pernyataan SQL, pernyataan tersebut akan dieksekusi dengan hak yang sama dengan aplikasi pengguna, saat menggunakan server SQL untuk mengeksekusi perintah yang berinteraksi dengan sistem operasi, proses akan berjalan dengan hak akses yang sama dengan komponen yang mengeksekusi perintah (misalnya database server, aplikasi server, atau web server). Berikut vidio mode penyerangan sql injection;
  • 7. 4. TAHAPAN PENYERANGAN SQL INJECTION 2) Menentukan jumlah kolom Penentuan jumlah kolom ini perlu dilakukan karena kita perlu mengetahui kolom mana dari sebuah tabel yang bisa dimanfaatkan. Hal ini bertujuan supaya kita bisa memasukkan perintah SQL injection pada lokasi yang tepat. Sebab kalau kita memasukkan di tempat yang salah maka kita tidak akan memperoleh apapun. Untuk melakukan hal ini agak bersifat “trial and error”, dimana perintah yang digunakan adalah ORDER BY. 1) Tes vulnerabilitas Pengujian atau tes ini perlu dilakukan untuk mengetahui apakah sebuah situs web memiliki celah keamanan atau tidak untuk dilakukan SQL injection. Salah satu karakter yang sering digunakan untuk melakukan vulnerabilitas adalah pemakaian karakter kutip tunggal (‘)
  • 8. 3) Mencari kolom yang vunerable S e l a n j u t n y a a d a l a h m e n c a r i k o l o m y a n g m e m i l i k i c e l a h u n t u k d i l a k u k a n S Q L i n j e c t i o n . I s t i l a h l a i n n y a a d a l a h a n g k a e r r o r . 4) Menentukan nama database P a d a d a s a r n y a i n i b u k a n l a h s e s u a t u y a n g p e n t i n g t a p i a k a n l e b i h b a i k a g a r b i s a d i m a n f a a t k a n u n t u k k e p e n t i n g a n l a i n 5) Mencari nama kolom 6) Menampilkan isi data
  • 9. 5. MENCEGAH SQL INJECTION 1. Batasi panjang input box dengan cara membatasi di kode program. 2. Administrator web haruslah tegas menolak user yang menginput karakter selain abjad dan angka. 3. Untuk nilai numerik, konversilah menjadi integer. 4. Filter input yang dimasukkan user. 5. Jika memungkinkan, buatlah daftar karakter yang boleh digunakan. 6. Batasi karakter yang boleh diinput oleh pengunjung situs web anda. 7. Matikan atau sembunyikan pesan – pesan error yang keluar dari sql server yang berjalan. 8. Kalau bisa, hilangkan show error mysql. 9. Bagi yang menggunakan cms, sangat disarankan untuk mengupdate cms.