Langsung ke konten utama

Praktek Teknisi

Mencegah sql injection



BAB17
Mencegah SQL Injection


        Tidak afdol rasanya apabila buku ini tidak saya lengkapi dengan cara bagaimana mengamankan sebuah situs web dari aksi SQL Injection ini. Berikut ini beberapa trik yang perlu anda ketahui untuk mencegah aksi SQL Injection pada situs web Anda . jika pun tidak bisa mengamankan situs web sepenuhnya. Setidaknya akan memperlambat seseorang untuk melakukan aksi tersebut.
            Dari berbagai kasus SQL Injection yang telah dijelaskan dalam buku ini, dapat kita tarik kesimpulan, SQL Injection dapat tejadi karena tidak adanya penanganan terhadap karakter-karakter tanda petik satu dan juga karakter double minus yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL. Sehingga seseorang bisa menyisipkanperintah SQL ke dalam suatu parameter maupun suatu form.
            Dari penjelasan di atas, kita dapat mengambil tindakan pencegahan supaya situs web kita tidakmenjadi korban serangan SQL Intection.
1.      Batasi panjang input box (jika memungkinkan), dengan cara membatasinya dikode program. Sehingga orang yang tidak berhak akan bingung sejenak melihat input box-nya tidak bisa di-inject dengan perintah yang panjang

2.      Administrator web haruslah tegas menolak user yang menginput karakter selain abjad dan angka. Karakter khusus dilarang masuk. Terapkan hal ini, baik input user, parameter URL, dan nilai-nilai dari cookies.

3.      Untuk nilai numeric,konversilah menjdi integer, sebelum di parsing menjadi statement SQL.  Atau gunakan ISNUMERIC untuk memastikan data tersebut interger.

4.      Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal (Input Validation), dan karakter khusus lainnya.

5.      Jika memungkinkan ,buatlah  daftar karakter yang boleh digunakan (whitelist).

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.      Matikan fasiltas-fasilitas standar, seperti Stored procedures,Extended Stored Procedures jika memungkinkan.

9.      Ubah “Startup and run SQL Server” menggunakan low privilege user.

10.   Mengganti Error message (Pesan Error) karena hal ini sering kali digunakan oleh orang yang tidak berhak untuk menelusuri informasi jalur penyimpanan  database.

11.   Batasi Permisi hanya pada user yang terotorasi saja. Sang user tentu saja harus yakin bahwa data yang dia terima sudah akurat dan tidak ceroboh memodifikasinya.

12.  Kalau bisa, hilangkan show error mysql pada konfigurasi PHP.

13.  Jangan percaya bahwa ada 100% system kita aman, selalu lakukan update secara berkala.

14.  Bagi Anda yang menggunakan CMS, sangat disarankan untuk sering-sering meng-update CMS.

15.  Sering-seringlah untuk memeriksa apakah terdapat bug pada situs web yang Anda kelola. Cara yang paling mudah adalah menggunakan tool SQL Injection yang telah dibahas pada bab sebelumnya. Karena Anda bisa menemukan sendiri kelemahan pada situs web Anda, sebelumnya ditemukan oleh orang lain Supaya dari poin-poin diatas tidak terasa hanya teori,berikut saya berikan beberapa penjelasan detail untuk mencegah serangan SQL injection.

K O N F I G U R A S I

Dalam PHP Anda dapat melakukan hal ini menggunakan perintah using error_reporting(0); pada setiap kode atau dalam file konfigurasi php.ini.

Berikut beberapa konfigurasi PHP lainnya yang bisa anda terapkan apabila Anda merasa tidak memerlukan konfigurasi tersebut.

·         Register_globals (Atur menjadi off)
·         Allow_url_fopen (Atur menjadi off)
·         Magic_quotes_gpc (Atur menjadi off)
·         Magic_quotes_runtime(Atur menjadi off)
·         Safe_mode and open_basedir(Secara default dalam kondisi disanled, namun dapat diaktifkan ‘enable’ lalu melakukan konfigurasi yang sesuai dengan keamanan yang Anda perlukan. Namun Anda perlu berhati hati mengonfirgurasi fungsi ini.)

Anda juga dapat menggunakan beberapa fungsi pada PHP untuk memblok fungsi validasi input.

·         Is_<type>(input) Periksa jenis input berdasarkan type-nya apakah string atau numerik. Contohnya,is_numeric().
·         Strlen(input) Periksa panjang karakter input.
·         Preg-match(regex, matchstring) Cocokan parameter umum dengan matchstring menggunakan parameter regex.
Contoh penggunaan preg_matc untuk memvalidasi parameter adalah:
Susername = $_POST[‘username’];                                                                                                        if {!preg_match(“/^[a-zA-Z] {8,12} $/D”,$username) {// handle failed validation}

            S C R I P T      A S P     M E N C E G A  H     S Q L  I N J E C T I O N
            Berikut ini syantax bagi Anda yang mengunakan ASP untuk mencegah SQL injection dengan memeriksa setiap karakter inputan yang masuk kedalam database malalui statement SQL. Misalnya pada kasus berikut kita harus mencegah karakter ‘(single quote) untuk diproses kedalam databases atau kita bisa mengganti karakter ‘(single quote) yang masuk dengan” (double single quote). Adapun contoh script login_process.asp yang sudah dimodifikasi agar  mencegah SQL injection adalah sebagai beikut.

<% option explicit >%
<%
     Dim connstring,conn,recset
     Connstrig = “provider=SQLOLEDB.1; Password=rahasia; Persist
Security Info=True; User ID=Sa; Intital Catalog= sqlinject; Data
Source=localhost”
    Set conn = server.createobject( “adodb.connection”)
    Set recset = server.createobject( “adodb.recordset”)
     Conn.open connstring
     Recet.open “select * from tbUser where username = ‘ “ &
Replace (request.from(“username”), ” ‘ “ , ” ‘ ‘ “) & “ ‘ and password =
‘ “ & replace(request.from(“password”) , “ ‘ “ ,” ‘ ‘ “ & “ ‘ “ ,conn,3 , 2
     If not recset.eof then
        Response.write recset.recordcount
        Session (“username”) = reques.from (“username”)
        Response.redirect “secured_page.asp”
Else
      Responseredirect “login.asp”
End if
%>
Dari kode diperhatikan pada inputan username dan password,terdapat sedikit modifikasi dengan mengganti dari request.from(“username)
Replace(request.from(“username”) , “ ‘ “ , “ ‘ ‘ “),demikian juga untuk yang bagian password.


K A R A K T  E R E N K O D E                   
Sebagai tambahan, PHP juga menyediakan fungsi mysql_real_escape(), yang berfungsi untuk megubah tanda kutip single quote (‘) menjadi backslash (\) secara otomatis.
Jika Anda perhatikan dalam bab terdahulu terlihat bahwa pemakaian karakter enkode adalah satu usaha untuk meingkatkan keamanan situs web dari serngan SQL Intection ,Anda tetap dapat menggunakan hal tersebut. Selain itu, Anda juga bisa menggunakan beberapa bentuk enkode lainnya. Misalnya, untuk membuat enkode dari karakter kutip tunggal (single quote), Anda bisa mencoba beberapa alternative berikut.

Representasi
Jenis Enkode
%27
%2527
%317
%u0027
%u02b9
%ca%b9
&apos;
&#39;
&#x27;
%26apos;
URL enconding
Double URL enconding
Nested double URL enconding
Unicode representation
Unicode representation
Unicode representation
HTML entity
Decimal HTML entity
Hexadecimal HTML entity
Mixed URL/HTML enconding
                     
Namun , Anda perlu berhati-hati dalam mengubah pemakaian kode setting karena terkadang karakter-karakter tertentu juga diperlukan untuk mengeksekusi perintah SQL yang Anda gunakan.





By: Efvy Zam
Penerbit : PT Elex Media Komputindo
Karya : KOMPAS GRAMEDIA
Penulis : RIZKI MELAWATI
Judul buku :SQL INJECTION

Komentar

Postingan populer dari blog ini

Pusat PKL Lampung

Lembaga kursus dan pelatihan LKP Metro Techno Solution adalah lembaga kursus yang memberikan jasa layanan peserta PKL (Praktek Kerja Lapangan) ,  Sasaran utama peserta PKL adalah siswa - siswi SMK, dan mahasiswa - mahasiswi yang berada dilampung. Peraktek kerja lapangan di LKP metro Techno Solution saat ini dikenal dengan beberapa SMK di lampung mulai dari lampung timur,  lampung tengah,  lampung barat,  lampung utara,  dan lampung selatan. Dengan Bidang Keahlian saat ini peserta PKL ADALAH: * SMK TKJ (teknik Komputer Jaringan) * SMK MULTIMEDIA * SMK RPL * SMK AKUTANSI Dan beberapa perguruan tinggi di lampung, dengan metode kluster menjadikan Metro Techno Solution berbeda dengan lembaga kursus lainnya yang disesuaikan dengan kebutuhan DUNIA USAHA DAN INDUSTRI .  Dengan menciptakan tenaga ahli dibidang komputer, menjadikan lulusan sebagai rujukkan untuk ditempatkan dibeberapa perusahaan yang telah bekerjasama. Dengan kepercayaan tersebut Metro Techno Solutio...

PKL JARINGAN DIKOTA METRO

Kali ini peserta PKL dari Metro Techno Solution mendapatkan kesempatan untuk langsung terjun kelapangan untuk membangun sebuah jaringan komputer di salah satu PT di kota metro ,  dengan didampingi instruktur lapangan yang berpengalaman. Selain itu peserta didik langsung mengerjakan mulai dari menentukan berapa panjang kabel yang dibutuhkan, bagaimana medan yang akan dikerjakan (beresiko) atau tidak, serta menentukan topologi dan kelas yang akan digunakan.  Dengan pemasangan yang beresiko tinggi karena harus memanjat dan medan yang sangat licin peserta PKL juga diajarkan bagaimana cara mengatasi nya.  Serta bagaimana cara menghilangkan grogi ketika harus memasang dag paralon diketinggian.  Dengan pengalaman dilapangan memberikan kepercayaan kepada peserta PKL untuk dapat mengembangkan kemampuannya yang didapat disekolah pada dunia kerja dan industri, sehingga PKL di metro Techno Solution dapat menjadi salah satu rujukan untuk mengembangkan kemampuan dan...

PKL DI Metro Techno Solution

PKL DI Metro Techno Solution memberikan solusi kepada peserta yang ingin mencari pengalaman dan kesempatan untuk mengenal lebih jauh tentang DUNIA USAHA DAN INDUSTRI, selain itu juga peserta didik akan di bekali diantaranya : 1. akan di asah dan dilatih apa saja yang menjadi dasar untuk bisa bekerja sesuai dengan standar prusahaan dan kompetensi seperti apa yang di butuhkan. 2. menambahkan pengetahuan tentang bagaimana cara merawat dan maintenance perangkat hardware yang di miliki oleh tempat kerja dan cara mengatasi jika perangkat tersebut dibutuhkan secepatnya.     3. membentuk mental peserta didik untuk menghadapi resiko pekerjaan yang terkadang diluar dari target. 4. memberikan wawasan dan kreatifitas kepada peserta sehingga peserta PKL siap untuk menyelesaikan semua pekerjaan. dengan melihat persyaratan bekal diatas dapat disimpulkan bahwa siswa PKL harus diciptakan SDM handal untuk siap bersaing dengan dunia luar ataupun MEA.