TUTORIAL KOMPUTER
  • 10 Virus Komputer Paling Mematikan Di Dunia
  • Kunci Mempercepat Acces Komputer
  • MENGENAL SISTEM KOMPUTER
  • Sejarah Perkembangan Komputer
  • Informasi computer terkini
  • Mengenal System Software
  • Mengupas Masalah Motherboard
  • Mengupas Detail Tentang CPU
  • Kode Mempercepat Editing Paragraf
  • Memproteksi Folder Dengan Password
  • Macam-Macam Perintah Pada Run Commands
  • Mempercepat Waktu Shutdown
  • Ubah Tampilan Windows
  • Kode Akses Siemens
  • Kode Akses Samsung
  • Kode Akses Sony Ericsson
  • Kode Akses Nokia
  • Seni Photoshop ( Angan Merokok )
  • Menyembunyikan Menu Help Pada Start Menu
  • Menyembunyikan Menu Document Pada Start Menu
  • Menyembunyikan menu Find pada Start Menu
  • Mengembalikan Folder Documents Yang Hilang
  • Memproteksi File
  • Mengganti Icon Drive
  • Mengganti Alignment Pada Drop Down Menu
  • Disable Klik Kanan Pada Taskbar
  • Disable Klik Kanan Pada Dekstop & Explorer
  • Menyembunyikan Menu Start Menu
  • Persentasi Antara Flash Dan Power Point
  • Mengganti Screen Saver Lewat Registry
  • Menghilangkan Username Pada Start Menu
  • Menampilkan Administrator Di Welcome Screen
  • Menyembunyikan My Recent Documents
  • TUTORIAL HACKER
  • Bad Unicode
  • Cara Skip Win Registrasi XP
  • Craking Dengan F.A.R.A.B.I
  • DoS, Serangan yang Belum Tertangkal
  • Hack Dan Prinsip Dasar Psikologis Hack
  • Hacking NT Server Melalui Remote Data Service
  • 95% Web Server Di Dunia has been dead
  • Hacking Web Site with cart32.exe installed
  • Konsep Lain Menjebol Server Webfroot Shutbox
  • Istilah Teknologi Informasi Bahasa Indonesia
  • Mendapatkan account ISP gratis!
  • Mendapatkan Serial Number WinZip 8.1
  • Menghilangkan Password Bios
  • Mengintip Password Linux
  • Menjebol Apache Web Server Melalui Test-Cgi
  • Menjebol Server Melalui Service FTP
  • Pembobolan 1000 Kredit Card di Step-up
  • Penjebolan Server Melalui FTP
  • Hati-hati DLM Mengetikkan Klikbca.Com
  • VIRUS M HEART
  • Bongkar Password Microsoft Acces
  • BUG TELKOMSEL & (FREE Phone ke-CYPRUS
  • Cara Efisien Mendapatkan Puluhan Ribu Email
  • Cara Sederhana membuat virus PHP
  • Cara Singkat Menginfeksi Openssh-3.4p1 Z
  • Cracking GateKeeperm
  • HACKING FOR BEGINNER
  • Hack Windows NT2000XP Admin Password
  • Melewati pembatasan hak akses warnet
  • Melindungi Data dari SQL Injection
  • memainkan fungsi tombol HP
  • Membedah Teknik SQL Injection
  • Bongkar key Windows Dengan @ stake LC4
  • Meminimalkan Biaya Saat menelpon Di Wartel
  • Menangani Virus Lohan
  • MENGACAK-ACAK REGISTRY WARNET
  • Mengelabui Pengejar Hacker
  • Meng-Hack Pesawat Telepon Yang Terkunci
  • Meng-hack PHP-BUg's
  • Kelemahan pasword & login yahoo pd Cgi
  • Trik Penjebolan Sites
  • Ragam Hacking Menggunakan Google
  • Rahasia Teknik Serangan SQL Injenction
  • Teknik Pembuatan Virus Makro Pd XP
  • Seni Internet, Googlingg
  • Situs Hacker Yang Ikut Bermasalah
  • Teknik Hacking Situs KPU Dr segla arah
  • Teknik Menyusup Ke TNP Center KPU
  • Tip N Trik Telephon Gratis Musso
  • Trik Mereset Password Windows 9x
  • TUTORIAL BLOG
  • Menuliskan Script di Blog
  • Membuat Artikel Terkait/Berhubungan
  • Membuat Feed di Blog Dengan Javascript
  • Membuat Navigasi Breadcrumb di Blog
  • Membuat Meta Deskripsi di Halaman Blog
  • Membuat Readmore Versi 1
  • Membuat Read More Otomatis di Blog
  • Membuat Read More Versi 2
  • Membuat Tabs Menu Horizontal
  • Membuat Menu Tab View
  • Membuat Menu Vertikal
  • Cara Memasang Musik Pada Blog
  • Membuat Template Blog Hasil Buatan Sendiri
  • Buat Threaded Comment dgn Intense Debate
  • Membuat Menu DTree
  • Membuat Tab Menu Dengan Banyak Style
  • Menambah Toolbar Baru di Blogspot
  • Cara Membuat Tabel di Blog
  • Cara Membuat Tulisan Berjalan
  • Melakukan Backup Website atau Blog
  • Mendapatkan Free Hosting
  • Membuat Widget Status Twitter pada Blog
  • Manampilkan Profil Facebook di Website (blog)
  • Membuat Avatar Komentar Pada Blogger
  • Membuat Halaman Contact Me pada Blogspot
  • Cara Membuat Status Yahoo Messenger di Blog
  • Mendapatkan Layanan Google Friend Connect
  • Membuat Nomor Page Posting Di Blog
  • Tips dan Trik Menambah Kolom Di Blog
  • Mengatasi "Invalid Widget ID" pada Blogger
  • Membuat Slide Show Album Foto di Blog
  • Membuat Kotak Komentar dibawah Posting
  • Cara Membuat Kotak Link Exchange
  • Membuat Link Download
  • Cara Membuat Dropdown Menu
  • Cara Membuat Buku Tamu
  • Trik Memproteksi Blog
  • Cara Membuat Search Engine
  • Membuat Kategori / Label di Blogger
  • Menghilangkan Navbar (Navigation Bar)
  • Memasang Emoticon di Kotak Komentar
  • Menambah Emoticon di Shoutbox
  • Pasang Jam di Sidebar
  • Memasang Pelacak IP Address
  • Mengganti Tulisan "Older Post / Newer Post"
  • Memasang Alexa Traffic Rank
  • Memasang Tombol Google Buzz
  • Cara Membuat Cursor Animasi
  • Menyembuyikan Buku Tamu
  • 5 Cara Terbaik Mendapatkan Uang Dari Blog
  • Blogging Cepat Dengan BlogThis!
  • 21 Posts Separator Images
  • Mengganti Link Read More Dgn Gambar
  • Cara Menampilkan 10 Artikel Di Recent Posts
  • Offline Blogging Dgn Windows Live Writer
  • Cara Memasang Jadwal Sholat
  • Cara Membuat Daftar Isi Blog Otomatis
  • Membuat Daftar Isi Blog Manual
  • Iklan Google Adsense Di Tengah Artikel
  • Membuat Link Warna - Warni
  • Meletakkan Widget Di Bawah Header
  • Membuat Kotak Scrollbar
  • Memasang Video Di Artikel
  • Kode Warna HTML
  • Home » » Melindungi Data Anda dari Serangan SQL Injection

    Melindungi Data Anda dari Serangan SQL Injection

    Jasakom - Jika Anda sedang membuat sebuah website, atau sudah mempunyai website, Anda tentunya mengkhawatirkan mengenai serangan potensial dari user yang tidak bertanggung jawab.

    Seringkali, developer web terfokus pada masalah keamanan dari operating system dan webserver dimana situs mereka ditempatkan. Saat ditemukannya lubang keamanan pada webserver IIS yang mengijinkan para attacker mengeksploitasinya. 
    Keamanan pada IIS bukanlah satu-satunya daftar keamanan yang harus diperhatikan. Kode program tersebut umumnya ditulis untuk website dinamis seringkali menyebabkan lubang keamanan yang serius pada webserver IIS. Banyak lubang pada kode program yang dapat di eksploitasi oleh suatu exploit bernama SQL Injection.

    Apakah SQL Injection itu?
    SQL Injection adalah suatu teknik pemrograman yang memungkinkan seorang attacker untuk mengeksekusi perintah SQL yang tidak diotorisasikan, dengan memanfaatkan kelemahan input data yang tidak terenkripsi dalam query SQL yang membangun aplikasi web tersebut. Contohnya adalah sebagai berikut:


    Sebuah halaman web yang memuat username dan password untuk mengakses halaman tertentu (secured section), dan menjalankan sebuah script ASP yang memeriksa SQL query apakah username dan password yang dimasukkan pengunjung tersebut valid atau tidak.

    Dalam suatu skenario, situs yang berbasiskan ASP membutuhkan dua halaman, halaman pertama berupa file HTML untuk keperluan Login username dan password. Sedangkan halaman yang kedua berupa file ASP yang memeriksa validasi input yang dimasukkan pengunjung. Sebagai contoh halaman tersebut berisikan script
    berikut ini:

    teks yang berwarna merah jgn dicopy 
    jika anda mengkopi script dibawah ini ganti tanda (  ) dengan tanda <  > agar terbaca
    Login.htm
                      (form action="ExecLogin.asp" method="post")
                      Username: (input type="text" name="txtUsername")(br)
                      Password: (input type="password" name="txtPassword")(br)
                      (input type="submit" value="Kirim Data")
                      (/form)
                      
                            ExecLogin.asp
                            (%
                            Dim p_strUsername, p_strPassword, objRS, strSQL
                            
                            p_strUsername = Request.Form("txtUsername")
                            p_strPassword = Request.Form("txtPassword")
                            
                            strSQL = "SELECT * FROM tblUsers " & _
                            "WHERE Username='" & p_strUsername & _
                            "' and Password='" & p_strPassword & "'"
                            
                            Set objRS = Server.CreateObject("ADODB.Recordset")
                            
                            objRS.Open strSQL, "DSN=..."
                            
                            If (objRS.EOF) Then
                            Response.Write "login username atau password tidak
                            sesuai."
                            Else
                            Response.Write "Anda telah log in sebagai " &
                            objRS("Username")
                            End If
                            
                            Set objRS = Nothing
                            %)



    Sekilas pandang, script ASP ExecLogin.asp tidak menunjukkan sesuatu berupa lubang keamanan. User tidak dapat log in tanpa kombinasi username/password yang valid. Sebenarnya, kode ini belumlah dikatakan aman, dan mudah dieksploitasi melalui SQL Injection. Secara khusus, kerentanan ini berisikan fakta bahwa masukan pengunjung biasanya langsung membuat SQL Statement, yang mengakibatkan seorang attacker mampu mengendalikan eksekusi SQL Statement tersebut.

    Dalam sebuah contoh dari kerentanan yang memungkinkan jika menurut string yang dimasukkan ke field username/password ' or ''='. Statement SQL akan mengeksekusinya sebagai :


    SELECT * FROM tblUsers WHERE Username='' or ''='' and Password
    = '' or ''=''

    Query ini akan mengembalikan semua record yang tersimpan dalam tblUsers, dan script ASP akan memproses log in user sebagai identifikasi user yang pertama berdasarkan record pertama dalam table.

    Variasi lainnya dari serangan SQL Injection ini terjadi saat menerima parameter querystring untuk menghasilkan halaman yang dinamis. Dibawah ini adalah contoh dari halaman ASP yang menerima sebuah ID melalui querystring, dan secara dinamis menghasilkan halaman yang berisikan ID tersebut.

    <% Dim p_lngID, objRS, strSQL p_lngID = Request("ID") strSQL = "SELECT * FROM tblArtikel WHERE ID=" & p_lngID Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." If (Not objRS.EOF) Then Response.Write objRS("IsiArtikel") Set objRS = Nothing %>;


    Dalam keadaan normal, script ini akan menampilkan isi dari artikel dimana ID telah dilalui sebagai sebuah parameter querystring. Contohnya, halaman URL halaman akan tampak seperti ini:

    http://www.jasakom.com/Artikel.asp?ID=1055

    yang mana hal ini menunjukkan suatu isi dinamis dari artikel dengan ID 1055.

    Sebagaimana contoh login diatas, kode ini membuka dirinya untuk diserang oleh SQL Injection. Para Attacker dapat mengganti ID artikel yang valid untuk menjalankan perintah SQL dengan suatu ID lain seperti: 0 or 1=1

    http://www.jasakom.com/Artikel.asp?ID=0 or 1=1

    Query SQL akan mengembalikan seluruh artikel dari table yang
    kemudian dieksekusi sebagai:

    SELECT * FROM tblArtikel WHERE ID=0 or 1=1

    Tentu saja, contoh ini mungkin tidak terlihat berbahaya, namun para attacker mampu memanipulasi aplikasi bahkan lebih jauh lagi berusaha menyisipkan perintah yang merusak, seperti statement DELETE. Hal ini dimungkinkan dengan melakukan manipulasi querystring sederhana! Contohnya, siapapun dapat memanggil halaman dengan sebuah querystring seperti:

    http://www.jasakom.com/Artikel.asp?ID=1055; DELETE FROM
    tblArtikel.


    Keterlibatan dari SQL Injection
    ---------------------------------
    Keterlibatan sebenarnya dari kerentanan ini berdasarkan lingkungan pemrograman dan konfigurasi. Jika koneksi database menggunakan konteks keamanan dari DBO, yang memungkinkan untuk memasukkan seluruh table dalam database, membuat table baru dsb. Jika koneksi database menggunakan konteks keamanan dari SA, yang juga memungkinkan untuk mengendalikan masukan dari SQL Server, dan dengan konfigurasi yang benar bahkan membuat user account mengambil alih database dari WebHosting Windows
    Server.

    Melindungi Aplikasi Anda dari SQL Injection
    -----------------------------------------
    Hal pertama yang harus dilakukan adalah melindungi query SQL dengan menerapkan teknik sanitasi (mengosongkan) seluruh input yang diterima dari permintaan objek ASP (seperti: Request, Request.QueryString, Request.Form, Request.Cookies dan Request.ServerVariabbles). Teknik sanitasi ini sangat tergantung pada Relational Database Management System.

    Catatan mengenai RDBMS:

    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.

    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 mengijinkanuser 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.

    Lebih jauh untuk mengurangi resiko serangan SQL Injection, pastikan menghapus/mengganti tampilan pesan kesalahan kepada user. Error Message juga seringkali digunakan untuk menelusuri jalur penyimpanan database. Untuk informasi mengenai pembuatan halaman Error menggunakan ASP silakan lihat kode dibawah ini:

    Sub LogError(strLocation)
    Dim objFSO 'sebagai Scripting.FileSystemObject
    Dim objStream 'sebagai Scripting.TextStream
    if Err.Number = 0 Then Exit Sub
    WriteLine ""_
    & "Terjadi kerusakan serius pada pemrosesan
    halaman ini."_
    & "Silakan coba lagi nanti atau hubungi
    webmaster.

    "
    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

    Akhirnya, untuk mengurangi serangan SQL Injection, batasi  permisi hanya kepada user yang terotorisasi yang dapat melihat data yang tersimpan dalam tempat penyimpanan, individu yang terotorisasi harus yakin bahwa data yang diberikan kepada mereka sudah akurat dan tidak secara ceroboh memodifikasinya. Kedua, user harus dapat mengakses data yang mereka butuhkan ketikan mereka membutuhkannya.

    Dibuat oleh si_cebol@yahoo.com
    Balikpapan - Kalimantan Timur
    Indonesia
    Jika Anda menyukai Artikel di blog ini, Silahkan klik disini untuk berlangganan gratis via email, dengan begitu Anda akan mendapat kiriman artikel setiap ada artikel yang terbit di Creating Website

    0 komentar:

    Poskan Komentar

     
    Support : Creating Website | Tutorq Template | Template
    Copyright © 2011. FAROUQ'S - All Rights Reserved
    Template Modify by Creating Website
    Proudly powered by Blogger