Setelah semuanya selesai, pindah ke apliasi Visual Basic 6, tulislah code berikut pada Form1.

dokumen-dokumen yang mirip
TUTORIAL ANTI INJECTION 1. SCRIPT CODE LOGIN ANTI SQL INJECTION. Materi asli dari Masinosinaga baca dibawah ini:

Teknik sql injection adalah suatu teknik yang sering digunakan oleh para attacker. teknik ini





Program absen dengan menggunakan visual basic 6.0

Sistem Distribusi Data Melalui COM+ Dengan Visual Basic

Tutorial, Source code, Request Program Visual Basic



Field Tipe Data Size Keterangan userid Text 12 Primary key namauser Text 30 - password Text 8 - akses Text 10 -


1. Kompetensi Memahami berbagai teknologi pemrograman basis data, khususnya MySQL, pada Visual Basic 6.0.

Algoritma Pemrograman 2 B

BAB IV PERANCANGAN. Gambar diatas adalah tampilang awal ketika ingin memulai project baru. Pilih Standart EXE untuk memulai project.

Keterangan : Integer Long : tipe data untuk angka bulat Single, Double : tipe data untuk angka pecahan/desimal Currency : tipe data untuk angka mata

Koneksi Visual Basic 6.0 dengan SQL SERVER 2000



Pertemuan III MENYIMPAN REKAMAN (RECORD) KE DALAM BASIS DATA

Visual Basic 6.0 For Beginners

LISTING PROGRAM. tanya = MsgBox("Apakah Anda yakin akan menghapus. kata : " & txtword.text & "?", vbquestion + gadoconn.

Program Enkripsi & Dekripsi sederhana menggunakan Visual Basic 6.0

Basic Programing Visual Basic

BAB IV IMPLEMENTASI DAN PENGUJIAN




MODUL D :// Mahasiswa memahami konsep pembuatan database. Mahasiswa memahami konsep pembuatan program dasar aplikasi database


Materi : Koneksi database & Operasi dasar table di Visual Basic 6.0.

LISTING PROGRAM. lbljalan.caption = "Selamat Menggunakan Kamus Digital Istilahistilah

Kartu Bimbingan Tugas Akhir Mahhasiswa

Program Login SQL Server Design form seperti gambar dibawah ini

Langkah ke 2 yaitu buat database form bukunya seperti gambar dibawah ini

BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR

LISTING PROGRAM. Script Menu Utama Pada Game Tebak Kata

FORM LOGIN. Option Explicit. Private Sub cmdexit_click() End End Sub

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAHASA PEMROGRAMAN (LISTING PROGRAM)

LISTING PROGRAM. 1. Listing Flash Pembuka. Private Sub Timer1_Timer() ProgressBar1.Value = ProgressBar1.Value + 4. If ProgressBar1.

MODUL VII APLIKASI MULTIUSER TRANSAKSI PENJUALAN

Listing Program a. Form Login. Public LoginSucceeded As Boolean


BAB IV IMPLEMENTASI DAN PEMBAHASAN SISTEM. Berdasarkan analisa dan perancangan sistem yang telah

Coding : Coding : Oleh : Uus Rusmawan Hal - 1

MODUL 2 SELECTION & LOOPING PADA FORM


DISUSUN OLEH : : Friska Rosalina NIM :

Modul Database dan Pengaksesannya dari FORM #Lanjutan

DAFTAR PUSTAKA. Multimedia Control, Steven Holzner. Diakses pada tanggal 14/09/2011 Dari

(Label, Textbox, Command, Message Box, Validasi)

Krisna D. Octovhiana. 1.1 Mengenal Struktur Kontrol.


BAB V PROSEDUR DAN FUNGSI

PRAKTIKUM 1 ( PENGGUNAAN ADO )

Visual Basic 6.0 For Beginners

KARTU BIMBINGAN TUGAS AKHIR MAHASISWA

Excel Sebagai Output VB 3.1 Excel Sebagai Output VB

Menggunakan DataGrid dengan ADODC 1. Tanamkan pada form sebuah ADODC dan DataGrid

LISTING PROGRAM. Kode Form Splash Screen. Private Sub Form_Load() lblversion.caption = "Version " & App.Major & "." & App.Minor & "." & App.

Pemrograman Database dengan Remote Data Control. Tessy Badriyah, SKom,MT

Membuat Proteksi File Excel Tingkat Tinggi dengan Kode VBA. By. Samsudin_Batolay

Membuat Form Input Barang (Untuk Server)


Nama Barang Sat Pemakaian Setahun Harga per unit Nilai Setahun. Kardus Aira 240 ml Lembar 1,312,000 Rp 1,420 Rp 1,863,040,000

BAB III ANALISIS DAN DESAIN SISTEM

STRUKTUR KENDALI PERCABANGAN

1. Rancangan Input Program Form Menu Utama Form Data Barang [ Input Barang ]


Gambar 1 Table Petugas. Gambar 2 Penambahan Komonen Pada Form

SNIPTEK 2014 ISBN: SISTEM INFORMASI AKUNTANSI JURNAL UMUM TELKOMSEL SUKABUMI

OPERASI FILE Operasi File Dalam Visual Basic Membuka File

Bahasa Pemrograman-1 (Visual Basic)

BAB III LANDASAN TEORI. muka yang bersifat grafis Graphical User Interface (GUI). Daripada menulis

MODUL 2 Variabel, Val, If tunggal dan If bersarang + case


Kode Program : Koneksi. Klik Kanan Adobrg Pilih ADODC Properties Maka akan muncul tampilan sbb: Instruktur : Nani Purwati

Praktekum VB 6.0 I. KOTAK PESAN. Contoh syntax kotak pesan

MODUL IV PERULANGAN ( LOOPING )

BAB IV IMPLEMENTASI DAN PENGUJIAN. Setelah dilakukan tahap analisis dan perancangan sistem, maka tahap

1. Kompetensi Memahami berbagai teknologi pemrograman basis data, khususnya MySQL, pada Visual Basic 6.0.

BAB IV IMPLEMENTASI DAN PENGUJIAN. dan tempat implementasi dari perangkat lunak ini adalah sebagai berikut :

Membuat Form Lebih Lanjut (Sub Form) Gambar 1. Contoh Sub Form

Simposium Nasional Teknologi Terapan (SNTT) ISSN: X PERANGKAT LUNAK PENGAMANAN DATA MENGGUNAKAN ALGORITMA MESSAGE DIGEST-5 (MD-5)

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

Modul Database dan Pengaksesannya dari FORM #1

SISTEM INVENTORI PADA TOKO PAKAN TERNAK SK (SUMBER KELAPA) GROUP PS DI BLITAR JAWA TIMUR DENGAN MENGGUNAKAN VISUAL BASIC 6.0.

FUNGSI PENCABANGAN DAN PERULANGAN

MEMBACA RECORD DENGAN ADODC

PEMROGRAMAN CLIENT. Latihan 1. Buka IDE Visual Basic dan buat project baru, simpan pada folder anda masingmasing.


Aplikasi CRUD dengan Visual Basic 2012 [APLIKASI CRUD DENGAN VISUAL BASIC 2012 & MYSQL] September 18, & MySQL. Bahtiar Imran

BAB IV HASIL DAN UJI COBA


JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN ISSN : VOL. 5 NO. 1 MARET 2012



HandleError: MsgBox "Proses tidak bisa dikerjakan.", vbinformation, "Perhatian" On Error GoTo 0 End Sub

Transkripsi:

ANTI SQL INJECTION Mungkin di antara Anda sudah banyak yang mengenal teknik serangan terhadap aplikasi yang dinamakan "SQL Injection". SQL Injection atau dalam bahasa Indonesia, artinya: Suntikan SQL (Structure Query Language), telah banyak memakan korban. Karena dengan mengetahui teknik serangan ini, Anda sudah bisa mengelabui aplikasi database. Untuk itu, bagi Anda yang baru mengenal teknik serangan ini, ada baiknya untuk menyimak ulasan berikut. Untuk mengetahui secara mudah tentang dampak dari serangan ini, kita mengambil contoh pada proses "LOGIN". Proses "LOGIN" adalah proses yang paling vital dalam setiap aplikasi yang ada. Karena dengan adanya proses ini, masing-masing user dapat ditentukan haknya dalam mengakses suatu aplikasi. Contohnya pada aplikasi-aplikasi perkantoran, proses "LOGIN" sangat berguna untuk menentukan jabatan dan pekerjaan apa yang harus dilakukan seorang karyawan dalam aplikasi yang dibuat. Dari pada kita membayang-bayangkan, lebih baik kita praktek langsung agar lebih mudah dicerna. Di sini kita bersama-sama membuat contoh aplikasi Visual Basic dengan Database Access. Untuk itu buatlah desain form seperti yang tampak pada gambar dibawah ini. Biarkan Property Name pada masing-masing control apa adanya. Selanjutnya kita desain sebuah database sederhana. Buatlah database Microsoft Access dengan nama tabel "login" yang berisi kolom (field) "user" dan "password", lalu namakan databasenya "pegawai.mdb". Isikan dengan beberapa record. Setelah semuanya selesai, pindah ke apliasi Visual Basic 6, tulislah code berikut pada Form1.

Code:: Private Sub Command1_Click() _ Data1.RecordSource = "SELECT * FROM LOGIN WHERE USER='" & Text1.Text & "' AND PASSWORD='" & Text2.Text & "'" Data1.Refresh If Data1.Recordset.RecordCount > 0 Then Else MsgBox "Login Berhasil!" MsgBox "Login Salah!" Private Sub Form_Load() Data1.RecordSource = "SELECT * FROM LOGIN" Data1.Refresh Sekarang, cobalah program tersebut. Lakukan pengujian dengan memasukkan user dan password yang salah. Jika Anda menemukan pesan "Login Salah!" maka proses berjalan dengan normal. Namun biar lebih memastikan bahwa program berjalan baik, coba juga dengan memasukkan user dan password yang benar. Jika Anda tidak salah memasukkan user dan password, maka pesan yang keluar adalah "Login Berhasil!". Artinya sampai saat ini pengujian program berjalan dengan baik. Terus apa lagi yang dipikirkan? Inilah suatu kecerobohan yang terkadang sering muncul dalam aplikasi yang dibuat para programmer. Para programmer sering lupa akan sisi keamanan aplikasi yang dibuat. Untuk melihat dampak dari serangan ini. Jalankan kembali aplikasi yang kita buat, dan anggaplah Anda sebagai orang lain yang tidak mengetahui password untuk mengakses aplikasi tersebut. Namun dengan sedikit SQL Injection anda dapat memasuki ruang login hanya dengan memasukkan teks berikut "hack' or '1'='1" (tanpa tanda kutip) pada textbox

input user dan/atau password. Maka Anda tidak akan melihat pesan "Login Salah!" melainkan "Login Berhasil!". Terus, bagaimana ini bisa terjadi? padahal kita tidak memasukkan password sesungguhnya? Ketika kita memasukkan user "meyer" dan password "tomero", maka query sql pada code diatas akan menjadi : Quote: SELECT * FROM LOGIN WHERE USER='meyer' AND PASSWORD='tomero'" Karena SQL menggunakan kriteria berdasarkan user dan password tersebut, maka jika user dan password tidak cocok dengan yang ada dalam tabel secara otomatis aplikasi memunculkan pesan "Login Salah!". Tapi, jika kita memasukkan teknik SQL Injection pada query melalui input pada aplikasi misalkan user dan password "hack' or '1'='1", apa yang terjadi pada query sebenarnya? Quote: "SELECT * FROM LOGIN WHERE USER='hack' or '1'='1' " & _ AND PASSWORD='hack' or '1'='1'" Kita dapat melihat, bahwa query SQL sudah berubah menjadi query yang tidak menampilkan filter terhadap user dan password. Itu dikarenakan pernyataan "OR 1=1" menyebabkan hasil execute query yang menghasilkan nilai True. Mengapa True? Dalam logika matematika, False Or True atau True Or True menghasilkan nilai True. Untuk hal ini saya tidak akan membicarakan panjang lebar. Anda bisa membacanya dalam pelajaran logika Matematika atau Pemrograman. Hasil pengembalian nilai True ini pada query tadi mengakibatkan seluruh record akan ditampilkan, karena semua kriteria berlaku pada semua record. Trik yang menyenangkan, bukan? Dari percobaan yang sudah kita buat, kita dapat menggambarkan bagaimana cara untuk menghindari serangan ini. Selanjutnya kita akan membuat contoh sederhana prosedur untuk memfilter input yang dimasukkan oleh orang agar tidak bisa dicurangi dengan SQL Injection.

Code:: Private Function FilterSQL(strInput As String) As String strinput = Replace(strInput, "'", "''", 1, -1, 1) strinput = Replace(strInput, "_xp", "", 1, -1, 1) strinput = Replace(strInput, "--", "", 1, -1, 1) strinput = Replace(strInput, ";", "", 1, -1, 1) FilterSQL = strinput End Function Prosedur diatas akan mengubah semua karakter-karakter yang berdampak pada teknik SQL Injection ini. Untuk itu tambahkan prosedur tersebut dalam code sebelumnya dan gantilah query SQL untuk proses filter user dan password seperti code berikut. Code:: Data1.RecordSource = "SELECT * FROM SISWA WHERE NAMA='" & FilterSQL(Text1.Text) & _ "' AND ASAL='" & FilterSQL(Text2.Text) & "'" Data1.Refresh Akhir kata, sekian dulu tutorialnya untuk saat ini. Namun seperti biasa, sebelum saya menutup pelajaran hari ini, saya mau memberikan PR agar Anda dapat lebih memahami tutorial ini dengan baik dan lebih berhati-hati lagi saat membuat modul Login di aplikasi Anda. Untuk itu, silahkan Anda coba lakukan percobaan SQL Injection pada code yang belum di proteksi, agar dapat melakukan manipulasi record seperti "UPDATE" atau "DELETE". Oke.

SCRIPT CODE LOGIN ANTI SQL INJECTION (CARA MENGATASI ANTI SQL INJECTION) dibawah ini Agar lebih kebal dari SQL injection, scrip code untuk login dapat anda buat lebih spesifik yang mengquery tabel login/user. Isian text oleh user jika dieksekusi tidak mengakibatkan SQL injection, karena proses validasi ada pada pencocokan isi tabel login/user. Berdasar kriteria filter tersebut kemudian cocokan recorset field USER dan PASSWORD nya. Jika cocok maka proses login dapat Anda terusan ke aplikasi berikutnya, jika tidak maka keluar. Databse yg digunakan PBL.MDB berisi Tabel PUser dgn field UserName(text 20), Password(text 20). Buatlag form spt diatas dan code program sbb: Option Explicit Dim cnpbl As ADODB.Connection Dim rspuser As ADODB.Recordset ---------------- Private Sub cmdexit_click() End --------------------------- Private Sub cmdok_click() On Error GoTo PP

Dim coba As Integer Dim Uname As String Dim Pwd As String Dim SQL As String Uname = Trim(txtPuser.Text) Pwd = Trim(txtPassword.Text) SQL = "SELECT * FROM PUSER WHERE UserName=" & "'" & Uname & "' AND Password=" & "'" & Pwd & "'" rspuser.open SQL, cnpbl, adopenkeyset, adlockoptimistic If Not (txtpuser.text = rspuser!username And txtpassword.text = rspuser!password) Then txtpuser.text = "" txtpassword.text = "" txtpuser.setfocus MsgBox "USER NAME ATAU PASSWORD SALAH", vbcritical, "INFO" Exit Sub If txtpuser.text = "" Or txtpassword.text = "" Then txtpuser.setfocus Exit Sub frmlogin.hide frmbarang.show ' jika benar buka form aplikasi PP: Select Case Err.Number Case 3705 rspuser.close Resume End Select ----------------------------- Private Sub Form_Load() Set cnpbl = New ADODB.Connection

Set rspuser = New ADODB.Recordset cnpbl.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\PBL.mdb;Persist Security Info=False" rspuser.open "SELECT * FROM Puser", cnpbl, adopenkeyset, adlockoptimistic ---------------------------------------------------- Private Sub txtpassword_keypress(keyascii As Integer) If KeyAscii = 13 Then cmdok.setfocus -------------------------------------------------- Private Sub txtpuser_keypress(keyascii As Integer) If KeyAscii = 13 Then txtpassword.setfocus