Minggu, 04 Januari 2015

KEAMANAN WEB

  BAB I
   PENDAHULUAN

1.1     Latar Belakang

Dalam era teknologi seperti sekarang ini perkembangan teknologi telekomunikasi dan penyimpanan data yang menggunakan komputer memungkinkan pengiriman data jarak jauh  merupakan salah satu metode cepat dan relatif murah. Namun pengiriman data jarak jauh seperti ini yang bisa menggunakan sarana internet ataupun berupa gelombang radio dan media lain, tidak menjamin keamanan pada data tersebut. Akan sangat memungkinkan adanya pihak lain yang dapat menyadap dan mengubah data yang dikirim. Sehingga data yang diterima akan merubah atau bahkan akan hilang, tidak diterima oleh sipenerima.
Memasuki era teknologi informasi sekarang ini, berbagai ilmuan dalam bidang ilmu teknologi telah mengembangkan berbagai cara dalam mengatasi permasalahan sistem keamanan suatu dalam suatu data. Mereka mengembangkan berbagai cara untuk menangkal serangan – serangan yang bisa mengancam keamanan data. Salah satu cara yang ditempuh untuk mengatasi permasalahan ini adalah dengan menggunakan metode penyandian pesan yang disebut sebagai ilmu kriptografi yang menggunakan transformasi data sehingga data yang dihasilkan tidak dapat dimengerti oleh pihak ketiga.
Transformasi ini memberikan solusi pada dua masalah keamanan data, yaitu masalah privasi (privacy) dan keautentikan (authentication). Privasi mengandung arti bahwa data yang dikirim hanya dapat dimengerti oleh penerima yang sah. Sedangkan keautentikan mencegah pihak ketiga untuk mengirimkan data yang salah atau mengubah data yang dikirimkan. Sehingga pengiriman data akan menjadi lebih secure terhadap serangan dari pihak ketiga yang tidak berhak merubah semua informasi pada data – data tersebut.

1.2     Tujuan Penulis
Masalah keamanan dan kerahasiaan data merupakan salah satu aspek yang sangat penting dari suatu sistem informasi. Hal ini sangat berhubungan dengan betapa pentingnya informasi tersebut dikirim dan diterima oleh orang yang berkepentingan terhadap data. Informasi tidak akan berguna lagi apabila ditengah jalan pengiriman data dibajak atau disadap oleh orang yang tidak berhak. Informasi pada data akan hilang keasliannya sehingga pihak penerima akan mendapatkan informasi yang beda.
Keamanan dan kerahasiaan data terkait pada sistem jaringan komputer yang menjadi isu sangat penting dan terus berkembang. Pada garis besarnya, masalah kemanan jaringan dapat dibagi menjadi empat bagian yang saling berhubungan satu sama lain, yakni, kerahasisaan, keaslian, pengakuan, dan kontrol integritas. Kerahasiaan harus dilakukan dengan menjauhkan informasi dari orang – orang yang tidak berhak , keaslian berkaitan  dengan menentukan dengan siapa anda berbicara sebelum memberikan informasi yang sensitif atau memasuki perjanjian bisnis, sedangkan pengakuan berkaitan dengan tanda tangan.
Selain keamanan dan kerahasiaan pada jaringan komputer, konsep ini juga berlaku untuk keamanan dan kerahasiaan data pada internet. Dikarenakan internet akan dapat diakses oleh semua kalangan, maka keamanan dan kerahasiaan data akan menjadi hal yang terpenting demi kenyaman antara kedua pihak. Informasi yang terkandung didalam jaringan internet tersebut juga semakin lengkap, akurat, dan penting yang perlu mendapat perlakuan yang lebih spesifik.
Pada perkembangannya, dunia komputer selalu mengupdate sistem operasi pada komputer dan utilitas sehingga tingkat performansi, kehandalan, dan fleksibilitas sistem software akan menjadi hal yang utama dalam proses perngembangan software. Dengan semakin penting dan berharganya sebuah informasi tersebut dan ditunjang oleh kemajuan pengembangan software, tentunya menambah daya tarik bagi para pembobol (hacker) dan penyusup untuk terus melakukan eksperimennya guna menemukan dan mempergunakan setiap kelemahan yang ada dari konfigurasi sistem informasi yang telah ditetapkan.
Dari masalah yang terjadi diatas muncullah ide penulis untuk dapat membuat suatu makalah yang nantinya dapat membantu dalam menyelesaikan permasalahan diatas. Adapun maksud tujuan dari penulisan makalah ini adalah memberikan suatu metode yang dapat memberikan pengamanan data melalui jalur internet sehingga akan dapat mempermudah dan memberikan kenyamanan dalam menggunakan fasilitas internet untuk dunia usaha. Penulis juga bermaksud untuk menjadikan makalah ini sebagai bahan pembelajaran dalam dunia informatika sehingga dapat melahirkan orang – orang yang berkompeten dalam mengembangkan teknologi di Indonesia.


1.3     Metode Penelitian
Agar dapat memperoleh kenyaman dan kemudahan dalam melakukan transfer data, perlu dibuat suatu sistem yang dapat menjaga keamanan dan kerahasiaan data pada suatu sistem jaringan komputer. Sistem yang diperlukan melingkupi beberapa jenis enkripsi agar informasi  tidak dapat dibaca atau dimengerti oleh sembarang orang kecuali oleh penerima yang berhak.
Dunia internet merupakan dunia maya yang setiap orang bisa masuk kedalamnya sehingga banyak sekali media yang tersedia sebagai alat komunikasi yang dapat membantu para pengguna komunikasi. Berbagai macam alat komunikasi yang tersedia, diantaranya adalah web, mail, milis dan sebagainya. Semakin banyak orang memanfaatkan layanan komunikasi didalam media internet tersebut maka semakin banyak juga muncul permasalahan, apalagi ditambah dengan adanya hacker dan cracker. Lalu orang – orang pun berusaha mencari cara agar dapat mengamankan informasi yang dikirimkannya, atau menyiasati bagaimana cara mendeteksi keaslian dari informasi yang diterimanya.
Melihat dari situasi diatas demi terwujudnya suatu sistem keamanan, penulis mencoba melihat permasalahannya dengan meneliti semua sistem yang behubungan dengan informasi yang berada didalam dunia maya. Adapun penelitian yang digunakan oleh penulis dalam membuat makalah ini adalah melalui literatur dari beberapa bahan – bahan situs internet dan buku yang berhubungan dengan sistem keamanan E-mail dan juga dengan berpegang prinsip pada sistem Kriptografi yang merupakan suatu seni atau ilmu penulisan rahasia informasi. Penulis juga melakukan observasi atau pengamatan terhadap makalah – makalah yang ada didalam situs internet yang membahas masalah Keamanan web.








                                      BAB II
LANDASAN TEORI
2.1 Web services
Web services menjadi sangat populer di enterprise karena kemampuannya dalam mengintegrasikan aplikasi-aplikasi yang berbeda platform dengan menggunakan dokumen XML. XML (eXtensible Markup Language) adalah sebuah standar untuk mendefinisikan data dalam format yang sederhana dan fleksibel. Dimana  web service mendukung komunikasi antar aplikasi dan integrasi aplikasi dengan menggunakan  XML dan Web. Secara umum sistem yang akan dibangun dalam penelitian ini adalah keamanan data pada web service dengan memanfaatkan XML Encryption dan kriptografi RSA. Pada  kriptografi RSA memanfaatkan library XMLSEC untuk pembuatan sepasang kunci publik.  Pada penelitian ini, terdapat dua analisa kebutuhan sistem yang akan diterapkan, yaitu:
1. Kebutuhan Fungsional  Dalam implementasinya, web service akan dibagi menjadi dua bagian, yaitu:
a. Client menghasilkan web service request Tahap ini berkaintan dengan proses-proses yang dilakukan oleh client untuk melakukan request kepada web service.
b. Server mengotentikasi client dan mengembalikan response Tahap ini menjelaskan beberapa proses yang dilakukan oleh web service setelah menerima SOAP Request dari client. Proses yang terjadi antara lain memastkan integritas pesan, mengotentikasi pengguna, mengenkripsi data xml, dan mendekripsi data xml.
2. Kebutuhan Non Fungsional Pada analisis kebutuhan non fungsional ini, proses sistem akan diperhatikan melalui dua aspek, yaitu:
a. Faktor waktu respon dari site internal maupun eksternal melalui web service yang tidak bisa diprediksi.
b. Proses enkripsi dan dekripsi pesan SOAP yang membutukan waktu yang tidak bisa diprediksi.
2.1.1 Perancangan Sistem

Sistem aplikasi yang akan dibangun memiliki arsitektur keamanan secara umum seperti pada Gambar 1, dimana setiap request dari client akan dilakukan otentikasi dan konfidensialitas. Otentikasi dilakukan ketika client berhasil melakukan login  dan akan diberikan akses ke sumber daya sesuai dengan hak aksesnya, sedangkan konfidensialitas di gunakan pada proses enkripsi dan dekripsi. 
Gambar 1. Model Keamanan Antara Client service dan Service Server dari Web Service
pada tahap ini data akan dienkripsi menggunakan private key milik masing-masing user dan public key, kemudian data xml yang mengalir selanjutnya dalam keadaan aman (terenkripsi) pada komunikasi antara client service dengan server service dari web service. Selanjutnya adalah data hasil enkripsi tadi akan disimpan dalam secure database dengan format data xml. Proses dekripsi sendiri akan akan dilakukan ketika data diminta oleh user lainnya dengan menggunakan private key milik user masing- masing dan public key. Enkripsi  terjadi antara client service dan server service dimana bertujuan untuk mengamanakan jalur transmisi pada web service sendiri. Rancangan ini dapat diperlihatkan pada Gambar 2.
Gambar 2. Rancangan Mekanisme Kerahasiaan Data User Pada Web Service3.3 
2.1.2 Implementasi Sistem
 Setelah proses perancangan sistem dilakukan, tahap selanjutnya adalah membuat implementasi sistem keamanan pada Web Service. Sedangkan untuk implementasi dari keamanan web service ini, maka dirancang arsitektur dan skenario dalam alur yang akan diterapkan. Arsitektur dan skenario dari keamanan web service ini dapat diperlihatkan pada Gambar 3.
Gambar 3. Implementasi Arsitektur Skenario Keamanan Web Service

2.2     Pretty Good Privacy (PGP)
            PGP (Pretty Good Privacy) adalah Suatu metode program enkripsi informasi yang memiliki tingkat keamanan cukup tinggi bersifat rahasia dengan menggunakan “Private-Public Key” sebagai dasar autentifikasinya sehingga jangan sampai dengan mudah diketahui oleh orang lain yang tidak berhak. PGP dikembangkan oleh Phill Zimmermann pada akhir tahun1980. pada awal mulanya , PGP digunakan untuk melindungi surat elektronik (e-mail) dengan memberikan perlindungan kerahasiaan (enkripsi) dan otentikasi (tanda – tangan digital). Untuk itu Phill Zimmermnn membuat sebuah program yang digunakan agar dapat melindungi informasi data dengan kerahasiaan. Program yang dibuat oleh Phill Zimmerann  memiliki 2 versi yaitu “USA Version “ dan “International Version”. PGP versi USA hanya dapat digunakan di wilayah USA dan oleh warganegara USA saja. PGP versi USA ini menggunakan algoritma RSA (yang telah menjadi hak paten) dalam enkripsinya. Sedangkan versi internasional menggunakan algoritma MPILIB yang diciptakankhusus oleh Phill Zimmermann sendiri. PGP Versi internasional bisa digunakan oleh seluruh dunia.
 
Gambar 4. Enkripsi Public Key

Enkripsi (encryption) merupakan suatu proses di mana sebuah pesan  (plaintext) ditranformasikan atau diubah menjadi bentuk pesan lain (chipertext) menggunakan suatu fungsi matematis dan enkripsi password khusus yang lebih dikenal sebagai key. Sementara Deskripsi (descryption) merupakan proses kebalikan, dari chiphertext dirubah kembali ke plaintext dengan menggunakan fungsi matematis dan key.
Pada saat kita membuat kunci, PGP akan menciptakan duah buah kunci yaitu private key dan public key yang merupakan sebuah pasangan bersesuaian. Private Key adalah kunci yang hanya diketahui oleh kita sendiri sedangkan Public Key adalah kunci yang kita beritahukan kepada orang – orang yang kita percaya. Public key digunakan sebagai dasar proses pengenkripsian dokumen – dokumen yang hanya bisa dibuka oleh orang yang memiliki private key yang bersesuaian.

2.2.1    Prinsip Kerja PGP
            PGP membuat sebuah session key, dimana sebuah kunci rahasia pada saat itu. Kunci adalah sebuah bilangan acak yang dihasilkan dari gerakan acak dari mouse dan tombol yang anda tekan. Session Key ini berkerja dengan sangat aman, algoritma enkripsi konvesional yang cepat untuk meng-enkrip plaintext.  Hasilnya adalah berupah chiper text. Sekali data dienkripsi, lalu session key ini dienkripsi lagi menggunakan kunci publik penerima. session key yang terenkripsi kunci publik key penerima dikirim dengn chipertext ke penerima.
Kombinasi dari 2 metode enkripsi menggabungkan kehandalan dari enkripsi kunci publik dengan kecepatan pada enkripsi konvensional. Enkripsi Konvensional kuarang lebih 1000x lebih cepat dari enkripsi kunci publik. Jadi enkripsi kunci publik memberikan sebuah solusi pada distribusi kunci dan masalah transmisi data. Dengan menggunakan keduanya, perfoma dan distribusi kunci dapat ditingkatkan tanpa mengorbankan sesuatu dalam keamanan.
Prinsip – prinsip kerja dari PGP itu sendiri adalah :
1.      PGP menggunakan teknik yang disebut Public-key encryption dengan dua kode yang saling berhubungan secara intrinsik, namun tidak mungkin untuk memecahkan satu dan yang lainnya.
2.      Jika membuat suatu kunci, secara otomatis akan dihasilkan sepasang kunci yaitu public key dan secret key. Kita dapat  memberikan  public key ke manapun  tujuan yang kita inginkan, melalui telephone,  internet, keyserver, dsb. PGP menggunakan dua kunci yaitu kunci public (proses enkripsi) dan privet (proses deskripsi).
3.      menggunakan dua kuci tersebut dikarenakan adanya conventional crypto, disaat terjadi transfer informasi kunci, suatu secure channel diperlukan. kunci yang dilihat oleh orang lain adalah yang digunakan hanya untuk enkripsi dan hanya pemiliknya saja yang mengetahui kunci rahasia tersebut.
2.2.2        Alasan pemakaian PGP
    Ada beberapa alasan penting mengapa kita perlu menggunakan PGP untuk mengamankan e-mail file kita.
1. Keamanan
Kita dapat menggunkan PGP untuk berkomunikasi secara aman, baik itu rencana bisnis, keuangan, atau hal – hal pribadi lain yang ingin dijaga kerahasiaannya. Kita dapat menggunakan PGP dengan e-mail untuk alasan yang sama pada waktu kita mengirim surat dengan menggunakan amplop. Mungkin teman seprofesi atu anggota keluarga ingin tahu bahwa informasi yang dikirim terjaga kerahasiaannya dan kiriman benar – benar berasal dari kita. Barang kali kita pernah mengirim e-mail kepada orang yang salah dan kita ingin mereka tidak membacanya. Hal ini sangat sulit untuk dilakukan, kemungkinan sudah banyak orang yang sudah mengetahui isi dari e-mail kita. Jadi untuk amannya e-mail maupun informasi yang kita kirim hendaknya disertai dengan software PGP.
2. Fleksibel
Karena PGP sudah plug-in untuk semua program browser dan banyak digunakan oleh semua program e-mail, maka PGP sangat fleksibel untuk digunakan. PGP selain melindungi e-mail juga file kita dan berjalan pada semua sistem operasi.
         3. Gratis
PGP dapat diperoleh secara gratis untuk penggunaan pribadi. Kita dapat mendownload softwarenya pada saat kita terhubung dengan internet. Semua kunci pribadi dapat kita peroleh dan tidak ada biaya tambahan yang dibebankan untuk pembuatan sertifikat maupun tanda tangan digital yang disertakan. Pada PGP untuk melakukan proses enkripsi digunakan kunci rahasia yang berbeda dengan kunci rahasia yang digunakan pada proses deskripsi.
2.2.3        Cara Mendapatkan Program PGP
Program PGP “International version” merupakan shareware dan dapat didownload dari beberapa ftp server sebagai berikut :
    ftp://ftp.ifi.uio.no/pub/pgp/(primary)
    ftp://ftp.ox.ac.uk/pub/crypto/pgp/
    ftp://ftp.dsi.unimi.it/pub/security/crypt/PGP/
    ftp://ftp.informatik.uni-hamburg.de/pub/virus/crypt/pgp/
Program PGP tersedia dalam berbagai platform seperti MS-Dos, Macintosh, Unix, VMS, OS/2, Atari, dlsb. Untuk platform MS-Dos sendiri, terdapat dua jenis yaitu pgp263i.zip (16 bit) dan pgp263ix.zip (32 bit). Untuk versi 32 bit, terdapat perbedaan pada kecepatan proses enkripsi dan pembuatan key dibandingkan dengan versi 16 bit.

2.2.4        Resiko Keamanan PGP
Apabila sistem kita sudah memasuki dunia internet, maka keamanan data pun menjadi hl yang penting. Berbagai cara pengaman telah dilakukan salah satunya seperti penggunaan aplikasi PGP. Berikut adalah beberapa resiko keamanan yang dihadapi oleh PGP :
1.      Kata Kunci dan Private Key yang mudah ditebak
2.      Perusakan Public Key
3.      File yang tidak dihapus dengan sempurna
4.      Virus dan Trojan
5.      Swap file dan virtual memori
6.      Pelanggaran keamanan secara fisik
7.      Serangan
8.      Kerusakan atau kesalahan tanggal
9.      Analisa lalu lintas jalan
10.  Kriptonalisis

2.3 SSL 
SSL telah menjadi standar de facto pada komunitas untuk mengamankan komunikasi antara client dan server. Kepanjangan dari SSL adalah Secure Socket Layer; SSL adalah sebuah layer protocol yang berada antara layer TCP/IP standar dengan protocol di atasnya yaitu application-level protocol seperti HTTP. SSL mengijinkan server untuk melakukan autentikasi dengan client dan selanjutnya mengenkripsi komunikasi. 
Pembahasan tentang operasi SSL pada bab ini bertujuan agar kita mengetahui penggunaan teknologi ini untuk mengamankan komunikasi antara server dengan client.   
2.3.1 Mengaktifkan SSL pada aplikasi 
Untuk mengetahui keuntungan SSL pada aplikasi, kita perlu melakukan konfigurasi server untuk menerima koneksi SSL. Pada servlet container yang berbeda akan berbeda pula cara untuk melakukannya. Disini kita akan belajar tentang melakukan konfigurasi Sun Application Server 8.1  
2.3.2 Certificates
Salah satu bagian yang perlu kita konfigurasi untuk membangun komunikasi SSL pada server adalah sebuah security certificate. Bisa kita bayangkan sebuah certificate dalam hal ini seperti sebuah pasport : dimana memiliki informasi-informasi penting pemilik yang bisa diketahui oleh orang lain. Sertifikat tersebut biasanya disebarkan oleh Certification Authorities (CA). Sebuah CA mirip seperti passport office : dimana CA bertugas untuk melakukan validasi sertifikat pemilik dan menandai sertifikat agar tidak dapat dipalsukan. 
Sampai saat ini sudah banyak Certification Authorities yang cukup terkenal, salah satunya adalah Verisign. Menentukan pemilihan CA adalah tanggung jawab atau wewenang dari seorang admin untuk memberikan sebuah sertifikat keamanan yang berlaku pada server. 
2.3.3 Membuat certificate private key 
Untuk menyederhanakan permasalahan ini, akan lebih mudah bila dengan melakukan operasi dimana certificate disimpan. Buka directory menggunakan command line. Selanjutanya panggil command berikut ini: 
 keytool -genkey -alias keyAlias    -keyalg RSA -keypass keypassword    -storepass storepassword    -keystore keystore.jks 
• keyAlias – adalah alias atau ID dimana certificate ini akan menunjuk kepada siapa. • keypassword – adalah password untuk private key yang digunakan dalam proses enkripsi. • storepassword – adalah password yang digunakan untuk keystore. 
Dalam hal ini mungkin sedikit membingungkan dimana dibutuhkan dua password untuk membuat sebuah certificate. Untuk mengatasinya, bisa kita ingat bahwa key yang dimasukkan disebut juga keystore. Keystore dapat menyimpan satu atau beberapa key. Keypassword merupakan password dari private key yang akan digunakan pada certificate, sedangkan storepassword merupakan password dari key yang ada di dalam keystore. Pada direktori yang sedang kita operasikan sudah memiliki sebuah keystore file dengan sebuah password, sehingga kita perlu menset nilai storepass menjadi : changeit. 
Password ini dapat diganti menggunakan keytool seperti ini:  
   keytool -keystore keystore.jks -storepass newPassword   
2.3.4 Membuat cerificate 
Setelah kita selesai membuat key yang akan digunakan oleh ceritificate sekarang kita dapat membuat file certificate itu sendiri: 
keytool -export -alias keyAlias -storepass storepassword -file certificateFileName -keystore keystore.jks  
Pada baris diatas dijelaskan bahwa keytool digunakan untuk membuat certificate file menggunakan private key yang disebut juga keyAlias yang berada pada keystore.  
2.3.5 Mengatur certificate 
Agar aplikasi server dapat mengenali certificate yang sudah kita buat, kita perlu menambahkannya pada daftar dari trusted certificates. Server memiliki file bernama cacerts.jks yang di dalamnya terdapat certificates. Kita dapat menambahkan certificate kita dengan menggunakan keytool berikut ini:  
keytool -import -v -trustcacerts -alias keyAlias -file certificateFileName -keystore cacerts.jks  -keypass keypassword 
2.3.6 Membuat secure HTTP listener 
Setelah kita sudah berhasil membuat certificate dan meregisternya untuk aplikasi server, sekarang kita akan membuat sebuah HTTP listener yang dapat digunakan untuk membuat komunikasi yang aman. 
Untuk melakukannya, langkah pertama login ke administration console. Selanjutnya klik tab Configuration dan buka HTTP Service 
 2.4 10 Celah keamanan pada aplikasi web  
Open Web Application Security Project (OWASP) adalah project open source yang dibangun untuk menemukan penyebab dari tidak amannya sebuah software dan menemukan cara menanganinya. Ada 10 celah kemanan aplikasi web yang ditemukan dan rekomendasi mereka tentang menanganinya sebagai sebuah standard keamanan minimal dari aplikasi web. 
1. Unvalidated input 
Semua aplikasi web menampilkan data dari HTTP request yang dibuat oleh user dan menggunakan data tersebut untuk melakukan operasinya. Hacker dapat memanipulasi bagian- bagian pada request (query string, cookie information, header) untuk membypass mekanisme keamanan. 
Berikut ini tiga jenis penyerangan yang berhubungan dengan masalah ini: • Cross site scripting • Buffer overflows • Injection flaws 
Ada beberapa hal yang dapat dicatat ketika menangani validasi pada aplikasi kita. Pertama, adalah tidak baik pada aplikasi web untuk percaya pada client side scripting. Script tersebut biasanya menghentikan form submission apabila terdapat sebuah input yang salah. Akan tetapi, script tersebut tidak dapat mencegah hacker untuk membuat HTTP requestnya sendiri yang terbebas dari form. Menggunakan client side validation masih bisa membuat aplikasi web yang mudah diserang. 
Kedua, beberapa aplikasi menggunakan pendekatan "negative" (negative approach) pada validasinya : Aplikasi mencoba mendeteksi jika terdapat elemen yang berbahaya pada request parameter. Masalah dari jenis pendekatan ini adalah hanya bisa melindungi dari beberapa serangan yaitu : hanya serangan yang dikenali oleh validation code yang dicegah. Ada banyak cara dimana hacker dapat membypass keamanan dari unvalidated input; Masih ada kemungkinan dimana cara yang baru tidak dikenali oleh aplikasi dapat membypass validasi dan melakukan perusakan. Adalah cara yang lebih baik untuk menggunakan pendekatan "positive" (positive approach) yaitu : membatasi sebuah format atau pola untuk nilai yang diijinkan dan memastikan input tersebut sesuai dengan format tersebut.   
2. Broken Access Control 
Banyak aplikasi yang mengkategorikan user-usernya ke dalam role yang berbeda dan level yang berbeda untuk berinteraksi dengan content yang dibedakan dari kategori-kategori tersebut. Salah satu contohnya, banyak aplikasi yang terdapat user role dan admin role : hanya admin role yang diijinkan untuk mengakses halaman khusus atau melakukan action administration. 
Masalahnya adalah beberapa aplikasi tidak efektif untuk memaksa agar otorisasi ini bekerja. Contohnya, beberapa program hanya menggunakan sebuah checkpoint dimana hanya user yang terpilih yang dapat mengakses : untuk proses lebih lanjut, user harus membuktikan dirinya terotorisasi dengan menggunakan user name dan password. • Insecure Ids – Beberapa site menggunakan id atau kunci yang menunjuk kepada user atau fungsi. ID dapat juga ditebak, dan jika hacker dapat mudah menebak ID dari user yang terautorisasi, maka site akan mudah diserang. • File permissions – Kebanyakan web dan aplikasi server percaya kepada external file yang menyimpan daftar dari user yang terotorisasi dan resources mana saja yang dapat dan/atau tidak dapat diakses. Apabila file ini dapat dibaca dari luar, maka hacker dapat memodifikasi dengan mudah untuk menambahkan dirinya pada daftar user yang diijinkan. 
Langkah-langkah apa saja yang dapat dilakukan untuk mengatasinya? Pada contoh-contoh tadi, kita dapat mengembangkan filter atau komponen yang dapat dijalankan pada sensitive resources. Filter atau komponen tadi dapat menjamin hanya user yang terotorisasi dapat mengakases. Untuk melindungi dari insecure Ids, kita harus mengembangkan aplikasi kita agar tidak percaya pada kerahasiaan dari Ids yang dapat memberi access control. Pada masalah file permission, file-file tersebut harus berada pada lokasi yang tidak dapat diakses oleh web browser dan hanya role tertentu saja yang dapat mengaksesnya.   

3. Broken Authentication dan Session Management 
Authentication dan session management menunjuk kepada semua aspek dari pengaturan user authentikasi dan management of active session. Berikut ini beberapa hal yang perlu diperhatikan : 
• Password strength – Aplikasi kita harus memberikan level minimal dari keamanan sebuah password, dimana dapat dilihat dengan cara melihat panjang dari password dan kompleksitasnya. Contohnya sebuah aplikasi dimana terdapat user baru yang akan mendaftar : aplikasi tidak mengijinkan password dengan panjang 3-4 karakter atau kata- kata simpel yang dapat mudah ditebak oleh hacker. 
• Password use – Aplikasi kita harus membatasi user yang mengakses aplikasi melakukan login kembali ke sistem pada tenggang waktu tertentu. Dengan cara ini aplikasi dapat dilindungi dari serangan brute force dimana hacker bisa menyerang berulang kali untuk berhasil login ke sistem. Selain itu, log in yang gagal sebaiknya dicatat sebagai informasi kepada administrator untuk mengindikasikan kemungkinan serangan yang terjadi. 
• Password storage – password tidak boleh disimpan di dalam aplikasi. Password harus disimpan dalam format terenkripsi dan disimpan di file lain seperti file database atau file password. Hal ini dapat memastikan bahwa informasi yang sensitif seperti password tidak disebarkan ke dalam aplikasi.   
Issue lain yang berhubungan : password tidak boleh dalam bentuk hardcoded di dalam source code.  
• Session ID Protection – server biasanya menggunakan session Id untuk mengidentifikasi user yang masuk ke dalam session. Akan tetapi jika session ID ini dapat dilihat oleh seseorang pada jaringan yang sama, orang tersebut dapat menjadi seorang client. 

4. Cross site scripting 
Cross site scripting terjadi ketika seseorang membuat aplikasi web melalui script ke user lain. Hal ini dilakukan oleh penyerang dengan menambahkan content (seperti JavaScript, ActiveX, Flash) pada request yang dapat membuat HTML output yang dapat dilihat oleh user lain. Apabila ada user lain yang mengakses content tersebut, browser tidak mengetahui bahwa halaman tersebut tidak dapat dipercaya. 
Cara yang bisa digunakan untuk mencegah serangan cross site scripting adalah dengan melakukan validasi data masuk dari user request (seperti header, cookie, user parameter, ...). Cara negative approach tidak digunakan : mencoba untuk memfilter active content merupakan cara yang tidak efektif.   

5. Buffer overflows 
Penyerang dapat menggunakan buffer overflows untuk merusak aplikasi web. Hal ini dilakukan karena penyerang mengirimkan request yang membuat server menjalankan kode-kode yang dikirimkan oleh penyerang. 
Kelemahan buffer overflow biasanya sulit dideteksi dan sulit dilakukan oleh hacker. Akan tetapi penyerang masih bisa mencari kelemahan ini dan melakukan buffer overflow pada sebagian aplikasi web. 
Terima kasih atas desain dari Java environment, dimana aplikasi yang berjalan pada J2EE server aman dari jenis serangan ini. 
Untuk memastikan keamanan, cara yang paling baik adalah melakukan pengawasan apabila terdapat patch atau bug report dari produk server yang digunakan.   

6. Injection flaws 
Salah satu kelemahan yang populer adalah injection flaw, dimana hacker dapat mengirimkan atau menginject request ke operating system atau ke external sumber seperti database. 
Salah satu bentuknya adalah SQL injection. Berikut ini salah satu contoh dari SQL injection : 
   http://someServer/someApp/someAction?searchString=jedi 
URL diatas akan memproses pencarian dengan kata kunci 'jedi'. Implementasi dimana tidak ada validasi input adalah seperti SQL code berikut ini : 
  select * from someTable where someField='value' 
dimana value adalah nilai dari parameter searchString yang ada pada HTTP request. 
Bagaimana jika, hacker melakukan input dari URL seperti ini : 
http://someServer/someApp/someAction?searchString=jedi'%20AND%20true;        %20DROP%20DATABASE;' 

 7. SQL query
select * from someTable where someField='jedi' AND true; DROP DATABASE;'' 
Statement awal pasti akan diterima dimana terdapat klausa AND TRUE. Dan statement selanjutnya yaitu DROP DATABASE juga akan diekseskusi yang akan memberikan kerusakan pada aplikasi. 
Serangan ini bisa mungkin terjadi karena input yang tidak divalidasi. Ada dua cara yang bisa dilakukan untuk mencegah serangan ini yaitu: 
• Daripada menggunakan statement SELECT, INSERT, UPDATE dan DELETE statement, bisa dibuat fungsi yang melakukan hal serupa. Dengan menggunakan fungsi diharapkan ada pengamanan terhadap parameter. Selain itu dengan adanya fungsi, parameter yang masuk harus sama dengan tipe data dari parameter yang dideklarasikan. • Hak akses dalam aplikasi juga harus dibatasi. Contohnya, jika aplikasi hanya bertujuan untuk melihat data, tidak perlu diberikan hak akses untuk melakukan INSERT, UPDATE atau DELETE. Jangan menggunakan account admin pada aplikasi web untuk mengakases database. Hal ini juga dapat meminimailkan serangan dari hacker.   

8. Insecure storage 
Aplikasi web biasanya perlu menyimpan informasi yang sensitif seperti password, informasi kartu kredit, dan yang lain. Dikarenakan item-item tersebut bersifat sensitif item-item tersebut perlu dienkripsi untuk menghindari pengaksesan secara langsung. Akan tetapi beberapa metode enkripsi masih lemah dan masih bisa diserang. 
Berikut ini beberapa kesalahan yang sering terjadi : 
• Kesalahan untuk mengenkripsi data penting • Tidak amannya kunci, certificate, dan password • Kurang amannya lokasi penyimpanan data • Kurangnya penghitungan dari randomisasi • Kesalahan pemilihan algoritma  • Mencoba untuk menciptakan algoritma enkripsi yang baru 
Berdasarkan skenario berikut ini :  Terdapat sebuah aplikasi, dimana terdapat password pada user object. Akan tetapi, aplikasi menyimpan user object ke dalam session setelah user login. Permasalahan yang akan muncul pada skenario ini adalah password dapat dilihat oleh seseorang yang dapat melihat session dari user tersebut.  
Salah satu cara yang dilakukan untuk menghindari kesalahan penyimpanan informasi yang sensitif adalah : tidak membuat password sebagai atribut dari kelas yang mewakili informasi user; Daripada mengenkripsi nomor kartu kredit dari user, akan lebih baik untuk menanyakannya setiap kali dibutuhkan.  

9. Denial of Service 
Denial of Service merupakan serangan yang dibuat oleh hacker yang mengirimkan request dalam jumlah yang sangat besar dan dalam waktu yang bersamaan. Dikarenakan request-request tersebut, server menjadi kelebihan beban dan tidak bisa melayani user lainnya. 
Serangan DoS mampu menghabiskan bandwidth yang ada pada server. Selain itu dapat juga menghabiskan memory, koneksi database, dan sumber yang lain. 
Pada umumnya sangat sulit untuk melindungi aplikasi dari serangan ini. Akan tetapi masih ada cara yang dapat dilakukan seperti membatasi resource yang dapat diakses user dalam jumlah yang minimal. Merupakan ide / cara yang bagus untuk membuat load quota yang membatasi jumlah load data yang akan diakses user dari sistem. 
Salah satu contoh adalah pada implementasi bulletin board : adanya pembatasan user pada saat melakukan search, dimana operasi ini hanya dapat dilakukan setiap 20 detik. Dengan cara ini dapat dipastikan bahwa user tidak bisa menghabiskan koneksi dari database. 
Solusi yang lain adalah mendesain aplikasi web dimana user yang belum terotorisasi hanya memiliki akses yang sedikit atau tidak memiliki akses ke content web yang berhubungan dengan database.  

10. Insecure Configuration Management 
Biasanya kelompok (group) yang mengembangkan aplikasi berbeda dengan kelompok yang mengatur hosting dari aplikasi. Hal ini bisa menjadi berbahaya, dikarenakan keamanan yang diandalkan hanya dari segi aplikasi : sedangakan dari segi server juga memiliki aspek keamanan yang perlu diperhatikan. Adanya kesalahan dari konfigurasi server dapat melewati aspek keamanan dari segi aplikasi.  
Berikut ini adalah kesalahan konfigurasi server yang bisa menimbulkan masalah : 
• Celah keamanan yang belum dipatch dari software yang ada pada server – administrator tidak melakukan patch software yang ada pada server. • Celah keamanan server dimana bisa menampilkan list dari direktori atau juga serangan berupa directory traversal. • File-file backup atau file contoh (sample file), file-file script, file konfigurasi yang tertinggal / tidak perlu. • Hak akses direktori atau file yang salah. • Adanya service yang seperti remote administration dan content management yang masih aktif. • Penggunaan default account dan default password. • Fungsi administrative atau fungsi debug yang bisa diakses. • Adanya pesan error yang informatif dari segi teknis. • Kesalahan konfigurasi SSL certificate dan setting enkripsi. • Penggunaan self-signet certificates untuk melakukan autentikasi. • Penggunaan default certificate. • Kesalahan autentikasi dengan sistem eksternal.








2.5  Metode- metode untuk menyerang  website
Beberapa metode yang biasa sering digunakan para hacker untuk menyerang suatu website:
            1. Remote File Inclusion (RFI)
            2. Local File Inclusion (LFI)
            3. SQL injection
            4. Cross Site Scripting (XSS)
            5. Keylogger
Ø  Remote File Inclusion (RFI) 
    Metode yang memanfaatkan kelemahan script PHP include(), include_once(), require(), require_once() yang variabel nya tidak dideklarasikan dengan sempurna.
    Dengan RFI seorang attacker dapat menginclude kan file yang berada di luar server yang bersangkutan.
Ø  Local File Inclusion (LFI)
Metode yang memanfaatkan kelemahan script PHP include(), include_once(), require(), require_once() yang variabel nya tidak dideklarasikan dengan sempurna.
Dengan LFI seorang attacker dapat menginclude kan file yang berada di dalam server yang bersangkutan.
Ø  SQL injection
    SQL injection adalah teknik yang memanfaatkan kesalahan penulisan query SQL pada suatu website sehingga seorang hacker bisa menginsert beberapa SQL statement ke ‘query’ dengan cara memanipulasi data input ke aplikasi tersebut.
Ø  Cross Site Scripting (XSS)
    XSS dikenal juga dengan CSS adalah singkatan dari Cross Site Scripting.XSS adalah suatu metode memasukan code atau script HTML kedalam suatu website yang dijalankan melalui browser di client.
Ø  Keylogger      
            Merupakan software/hardwareyang bekerja dengan cara merekam setiap tombol yang kita tekan pada tombol. Segala aktivitas yang kita inputkan pada komputer akan tercatat dalam software/hardware keyloger ini. Keylogger dibagi menjadi dua bagian.
            - Keylogger Hardware
            Biasanya berupa alat yang dipasang diantara slot keyboard pada komputer dan keyboard itu sendiri.
            - Keylogger Software
            Merupakan software yang terinstal pada PC yang bekerja dengan cara membajak input yang dikirimkan ke Windows Procedure.

  • Tips keamanan website
hacker, sehingga dapat mengurangi resiko kerusakan website, antara lain:
-   Jika menggunakan suatu CMS seperti joomla, phpbb, phpnuke, wordpress dan sebagainya, rajinlah mengupdate CMS jika muncul versi terbaru.
-   Kunjungi situs-situs yang membahas tentang keamanan aplikasi web seperti : www.milw0rm.com, www.securityfocus.com atau www.packetstormsecurity.org untuk mendapatkan informasi tentang bug terbaru.
 Menggunakan tenaga ahli tentang keamanan website untuk menganalisis keamanan website.
-   Menggunakan software seperti Acunetix untuk melakukan scanning atas kelemahan yang ada pada website.