Monday 1 July 2013

Penyebab Kelemahan Website

,
Dalam pemrograman PHP dan MySQL, terkadang anda sering mengabaikan Keamanan yang harus diwaspadai terhadap orang-orang iseng yang mencoba mengutak-atik situs dan Database anda. Padahal dalam pemrograman PHP terdapat tingkat sekuritas dalam mengamankan data yang sangat baik sekali, sehingga menjadi faktor PHP dan MySQL selalu diminati oleh programer WEB. Berikut ini adalah kelemahan-kelemahan dalam keamanan WEB dan cara-cara mengantisipasinya.

Jenis dan Penyebab Kelemahan Website.

1. Deface.

Seringkali anda mendengar atau bahkan melihat sebuah situs yang mempunyai isi tidak sesuai. Contoh konkretnya ialah situs sebuah lembaga pendidikan (ac.id) dengan halaman indeks dari website resmi yang diubah gambar atau logonya menjadi tidak sesuai. Kejadian tersebut, dalam dunia hacking, dinamakan deface. Deface ialah suatu teknik penyerangan dengan mengubah gambar atau website untuk maksud tertentu. Sebenarnya, ada banyak faktor yang menyebabkan terjadinya semua itu.

Menurut analisa penulis, faktor-faktor tersebut adalah :

1.1 Sistem Operasi.

Jika anda berniat membeli domain dan hosting, pastikan bahwa sistem operasi yang digunakan benar-benar reliabel, misalnya seperti sistem operasi varian Unix. Perlu diketahui bahwa hampir seluruh hosting center yang ada menggunakan Linux Redhat.

1.2 Kesalahan Pemrograman.

Hal ini paling sering terjadi. Kewaspadaan yang rendah menjadikan website mudah terkena deface. Misalnya, kesalahan dalam penggunaan management user di MySQL, yaitu menampilkan data tetapi menggunakan User yang mampu melakukan perintah SQL delete, insert atau bahkan drop. Inilah kesalahan umum yang terkesan sebagai sebuah kebiasaan yang tidak bisa ditinggalkan. Jika anda menyusun sebuah program berbasis web yang menggunakan database MySQL maka anda harus mempunyai user di MySQL lebih dari satu. Artinya, anda harus membuat user yang mampu melakukan perintah select saja jika web anda hanya sebatas menampilkan database MySQL kedalam web. Atau juga, jika membutuhkan halaman administrasi untuk menambah data atau menghapus, anda bisa membuat user baru yang hanya mampu melakukan perintah insert atau delete. Teknik deface dilakukan dengan tindakan yang disebut SQL Injection.

Pencurian Password.

Hal lain yang harus diperhatikan adalah ketika membuat halaman web yang mempunyai sistem autentikasi user. Anda harus membuat program seaman mungkin dengan menyertakan enkripsi. Tanpa enkripsi password atau data maka dengan mudah orang dapat menyadap (sniff) data Anda. Jadi, penggunaan enkripsi juga sangat diperlukan.

Kekeliruan dalam Pembuatan Direktori.

Terkadang, dalam pembuatan website, kita membuat direktori dengan susunan yang mudah diketahui orang. Misalnya, hampir semua website memiliki folder bernama images, including atau folder lain yang sejenis. Ini tentunya harus diantisipasi sehingga jika user mencoba mengakses dengan cara menebak, kita sudah memiliki tindakan preventil.

Kesalahan dalam File Include.

Dalam PHP versi lama untuk menyisipkan sebuah file kedalam file PHP adalah dengan cara memberi perintah.

Include ("db.inc");

Sebenarnya jika file *.inc dipanggil langsung dari browser maka isi dari file tersebut akan ditampilkan. Artinya, seseorang dapat melihat isi file anda yang asli. Jika yang anda sisipkan hanya file berisi baris perintah biasa maka tidak menjadi masalah. Namun, jika yang anda sisipkan berisi file konfigurasi database maka hal ini bisa kacau. Berikut ini contoh penggunaan file include yang salah dalam sebuah situs :

Choose a category

Warning : Host ‘server6.shoptoday.us' is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts' in /home/shop/shoptoday.us/htdocs/includes/db.inc on line 2

Warning : MySQL Connection Failed : Host ‘server6.shoptoday.us' is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts' in /home/shop/shoptoday.us/htdocs/includes/db.inc on line 2

Warning : Host ‘server6.shoptoday.us' is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts' in /home/shop/shoptoday.us/htdocs/includes/db.inc on line 4

Warning : MySQL Connection Failed : Host ‘server6.shoptoday.us' is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts' in /home/shop/shoptoday.us/htdocs/includes/db.inc on line 4

Pesan error tersebut muncul didalam browser bila User mencoba menyisipkan file konfigurasi Database. Secara umum, error seperti diatas disebabkan MySQL server dalam status mati sehingga setiap koneksi yang masuk akan menampilkan error seperti pesan diatas. Dari pesan tersebut, terdapat 2 titik kelemahan yang menjadi masalah serius dan terkadang tidak dapat diantisipasi.

1. Hampir semua website yang menggunakan bahasa pemrograman PHP atau ASP mempunyai folder bernama includes atau include. Perhatikan pesan diatas, penulis mengambil contoh satu pesan error.

Warning : Host ‘server6.shoptoday.us' is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts' in /home/shop/shoptoday.us/htdocs/includes/db.inc on line 2

Dari penggalan error diatas, kita sudah mendapatkan hostname dari MySQL server yaitu server6.shoptoday.us.

2. Keberadaan file *.inc akan mempermudah browser dalam menampilkan source code file tersebut. Dalam contoh diatas, terdapat db.inc pada folder includer. Jika penulis ketikan di browser URL http://shoptoday.us/includes/db.inc, maka setelah tampil lihat source code dengan cara klik kanan -> view source.

Perhatikan masing-masing file. Pada contoh kejadian shoptoday.us tedapat banyak kesalahan fatal. Kesalahan terjadi karena semua konfigurasi penting dimasukan kedalam file *.inc. Untuk mengantisipasi agar kejadian tersebut tidak terjadi pada website anda, pada setiap file yang akan disisipkan, silahkan menggunakan folder includes. Tetapi, untuk kasus diatas menjadi db.inc. PHP terkadang, nama file dengan kata inc sengaja diberikan agar webmaster atau orang lain yang ingin mengembangkan website dapat mengetahui secara mudah file yang penggunaannya adalah untuk disisipkan pada file lain.

Lalu pengertian dari Enkripsi dan Dekripsi adalah :

1. Pengertian

Enkripsi adalah suatu metode yang digunakan untuk mengkodekan data sedemikian rupa sehingga keamanan informasinya terjaga dan tidak dapat dibaca tanpa di dekripsi (kebalikan dari proses enkripsi) dahulu. Encryption berasal dari bahasa yunani kryptos yang artinya tersembunyi atau rahasia.

2. Metode yang digunakan.

Umumnya proses enkripsi dilakukan dengan sebuah rumus dan kunci untuk mendekripsi data. Dalam hal ini, ada beberapa cara melakukan pengamanan data melalui saluran,salah satu diantaranya adalah kriptografi. Ketika suatu pesan ditransfer dari suatu tempat ke tempat lain, isi pesan tersebut kemungkinan dapat disadap oleh pihak lain. Dalam kriptografi, untuk menjaga keamanan pesan, data/ pesan yang dikirimkan melalui jaringan akan disamarkan (di-cramble/diacak/ diubah menjadi kode yang tidak dimengerti oleh orang lain) sedemikian rupa sehingga walaupun data tersebut dapat dibaca, tetapi tetap tidak akan bisa dimengerti oleh pihak yang tidak berhak

Dalam dunia kriptografi, pesan yang akan dirahasiakan disebut plain teks. Pesan yang sudah diacak disebut cipher teks. Proses untuk mengkonversi plain teks menjadi cipher teks disebut enkripsi. Proses untuk mengembalikan plain teks dari cipher teks disebut deskripsi. Algoritma kriptografi (ciphers) adalah fungsi- fungsi matematika yang digunakan untuk melakukan enkripsi dan deskripsi. Diperlukan kunci yaitu kode untuk melakukan enkripsi dan deskripsi.

Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai berikut :

EK (M) = C (Proses Enkripsi)

DK (C) = M (Proses Dekripsi)

Pada saat proses enkripsi kita menyandikan pesan M dengan suatu kunci K lalu dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan dengan menggunakan kunci K sehingga dihasilkan pesan M yang sama seperti pesan sebelumnya.

Ada dua cara yang paling dasar pada kriptografi klasik.

1. Transposisi.

Transposisi adalah mengubah susunan huruf pada plaintext sehingga urutannya berubah. Contoh yang paling sederhana adalah mengubah suatu kalimat dengan menuliskan setiap kata secara terbalik.

Plaintext: IBU AKAN DATANG BESOK PAGI

Ciphertext: UBI NAKA GNATAD KOSEB IGAP

Contoh transposisi yang sedikit lebih sulit adalah plaintext yang disusun dalam kelompok huruf yang terdiri dari beberapa kolom huruf, misalnya 5 kolom huruf :

IBUAK
ANDAT
ANGBE
SOKPA
GIAAA

Plaintext disusun dalam 5 kolom huruf kemudian dituliskan per kolom, dengan urutan kolom yang bisa berubah-ubah

IAASGBNNOIUDGKAAABPAKTEAA

Kolom huruf dituliskan berurutan dari kolom 1,2,3,4,5

2. Substitusi

Cara kedua adalah cara substitusi yaitu setiap huruf pada laintext akan digantikan dengan huruf lain berdasarkan suatu cara atau rumus tertentu. Ada dua macam substitusi yaitu polyalphabetic substitution cipher dan monoalphabetic substitution cipher. Pada polyalphabetic substitution cipher, enkripsi terhadap satu huruf yang sama bisa menghasilkan huruf yang berbeda sehingga lebih sulit untuk menemukan pola enkripsinya.Pada monoalphabetic substitution cipher maka satu huruf tertentu pasti akan berubah menjadi huruf tertentu yang lain, sehingga pola enkripsinya lebih mudah diketahui, karena satu huruf pada ciphertext pasti merepresentasikan satu huruf pada plaintext.

Salah satu contoh cara substitusi adalah dengan dengan pergeseran huruf.Kita lihat pada gambar 4, urutan abjad ABCD.......Z bisa digeser sebanyak 1 huruf sehingga huruf A akan menjadi B, B akan menjadi C dan seterusnya. Pergeserannya bisa dibuat lebih banyak yaitu 2 huruf sehingga huruf A akan menjadi C, B akan menjadi D dan seterusnya.

Pergeseran bisa lebih banyak lagi tergantung bagaimana kita merumuskannya. Cara pergeseran ini termasuk monoalphabetic substitution cipher di mana satu huruf pasti akan berubah menjadi huruf tertentu yang lain. Karena relasi antara huruf plaintext dan huruf ciphertext satu-satu, yang artinya suatu huruf plaintext pasti menjadi suatu huruf ciphertext tertentu, maka cara monoalphabetic substitution ciphersangat mudah dipecahkan.

Urutan Abjad : ABCDEFGHIJKLMNOPQRSTUVWXYZ
Pergeseran 1 huruf : BCDEFGHIJKLMNOPQRSTUVWXYZA
Pergeseran 2 huruf : CDEFGHIJKLMNOPQRSTUVWXYZAB

KRIPTOGRAFI CAESAR

Salah satu kriptografi yang paling tua dan paling sederhana adalah kriptogtafi Caesar. Menurut sejarah, ini adalah cara Julius Caesar mengirimkan surat cinta kepada kekasihnya Cleopatra dan pada panglimanya. Sandi ini termasuk dalam sandi substitusi di mana setiap huruf pada text terang atau palintext di gantikan oleh huruf lainnya yang memiliki selisih posisi tertentu dalam alfabet. Dalam kriptografi Caesar, maka setiap huruf akan dituliskan dalam huruf lain hasil pergeseran 3 buah huruf. Kriptografi Caesar ini adalah kriptografi substitusi karena setiap huruf akan digantikan huruf lain. Sebagai contoh, huruf A akan digeser 3 huruf menjadi huruf D, B akan digeser 3 huruf menjadi E, J akan digeser menjadi M, O akan menjadi R dan seterusnya. Pergeseran ini juga berputar kembali ke awal abjad sehingga sesudah huruf Z diikuti kembali oleh huruf A. Kriptografi Caesar ini dikenal sebagai monoalphabetic substitution cipher karena satu huruf tertentu pasti akan berubah menjadi huruf tertentu yang lain.

Cara enkripsi yang paling sederhana adalah dengan mengganti suatu alpabet dengan karakter lain. Perubahan pada kriptografi Caesar bisa dituliskan sebagai berikut:

Plaintext : ABCDEFGHIJKLMNOPQRSTUVWXYZ
Ciphertext : DEFGHIJKLMNOPQRSTUVWXYZABC

Plaintext :KITA JUMPA BESOK PAGI
Ciphertext :NLWD MXPSD EHVRN SDJL

Plaintext : universitas duta wacana
Kunci : a = b, b = c, c = d, dst
Chipertext : vojwfstjubt evub xbdbob.

Jika Caesar akan menuliskan kalimat ‘I LOVE YOU' maka akan dituliskan dalam kalimat ‘L ORYH BRX.

Dan contoh lainnya lagi dengan menggunakan geseran 3, maka W akan menjadi Z, I akan menjadi L, dan K akan menjadi N, sehingga apabila text aslinya adalah "WIKI" maka akan menjadi "ZLNL" pada text tersandi. Cara kerja sandi caesar dapat dilihat dengan membariskan dua set alfabet, alfabet tersebut di susun dengan cara menggeser alfabet biasa ke kanan atau ke kiri dengan angka tertentu (angka-angka ini di sebut kunci). Misalnya sandi caesar dengan kunci 3, adalah sebagai berikut :
Biasa : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Sandi : D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Untuk menyandikan sebuah pesan, hanya cukup mencari setiap huruf yang ingin di sandikan di alfabet biasa, lalu tuliskan huruf yang sesuai pada alfabet sandi.Contoh penyandian sebuah pesan adalah sebagai berikut :
Teks terang : Keamanan Jaringan Teks tersandi : NHDPDQDQ MDULQJD

Coding program untuk enkripsi dan deskripsi dengan metode caesar dan bahasa pemrograman yang di gunakan adalah bahasa phyton 2.6 adalah sebagai berikut :

z=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c',
'd','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ']

print "Enkripsi"
a = raw_input("\nMasukkan kata = ")
b = ""
geser = 7
for x in range(len(a)):
temp = z.index(a[x])+geser
b=b+z[temp%53]
print " "
print "PlainText = "+a
print "ChiperText = "+b

Coding program di atas adalah procedure enkripsi, dalam z tersimpan karakter yaitu karakter huruf besar, kecil dan spasi, lalu memesukkan kata atau kalimat yang akan di jadikan sebagai pesan asli, pesan tersebut akan tersimpan ke dalam plaintext, kemudian geser = 7 adalah kunci untuk pergeseran huruf yang akan di lakukan dan akan di simpan dalam variabel kunci, setelah itu akan akan di lakukan pengulangan, pada pengulangan ini lah akan di lakukan pergeseran huruf, dan hasil pergeseran tersebut akan di tampilkan oleh perintah print "ChiperText = "+b
Dan untuk coding program deskripsi adalah sebagai berikut :

z=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c',
'd','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ']
print "\nDeskripsi"
a = raw_input("\nMasukkan kata = ")
b = ""
geser = 7
for x in range(len(a)):
temp = z.index(a[x])-geser
b=b+z[temp%53]
print " "
print "ChiperText = "+a
print "PlainText = "+b

Coding program di atas adalah procedure deskripsi, penjelasan untuk procedure deskripsi ini hampir sama dengan procedure enkripsi, yang membedakannya hanya lah pada pengulangan yang di lakukan pada program tersebut, pada baris perintah temp = z.index(a[x])-geser.

3. Manfaat dan kerugian

Beberapa manfaat yang bisa didapatkan dari enkripsi ini adalah:

a. Kerahasiaan suatu informasi terjamin
b. Menyediakan authentication dan perlindungan integritas pada algoritma checksum/hash
c. Menanggulangi penyadapan telepon dan email
d. Untuk digital signature.

Digital signature adalah menambahkan suatu baris statemen pada suatu elektronik copy dan mengenkripsi statemen tersebut dengan kunci yang kita miliki dan hanya pihak yang memiliki kunci dekripsinya saja yang bisa membukanya.

e. Untuk digital cash
Penyalahgunaan dan kerugian dari enkripsi adalah:

a. Penyandian rencana teroris
b. Penyembunyian record criminal oleh seorang penjahat
c. Pesan tidak bisa dibaca bila penerima pesan lupa atau kehilangan kunci (decryptor).

4. Kesimpulan

Sama seperti teknologi canggih lainnya, enkripsi dapat digunakan untuk mengamankan data bagi perusahaan, militer, pemerintahan, individu untuk tujuan yang baik. Namun enkripsi juga dapat digunakan untuk menyembunyikan informasi bagi para penjahat.

Artikel ini dilihat dari : http://www.klatenweb.com/articles881-Jenis-dan-Penyebab-Kelemahan-Website.html

1 komentar:

  • 1 August 2013 at 18:09
    Anonymous says:

    postingannya brmanfaat :)

Post a Comment

 

FurutaWashuu Blog Copyright © 2011 -- Template created by O Pregador -- Powered by Blogger Templates