Senin, 11 Juni 2012

0 komentar

Pengantar XML

Apakah XML Itu ?
XML kependekan dari eXtensible Markup Language, dikembangkan mulai tahun 1996 dan mendapatkan pengakuan dari W3C pada bulan Februari 1998. Teknologi yang digunakan pada XML sebenarnya bukan teknologi baru, tapi merupakan turunan dari SGML yang telah dikembangkan pada awal 80-an dan telah banyak digunakan pada dokumentasi teknis proyek-proyek berskala besar. Ketika HTML dikembangkan pada tahun 1990, para penggagas XML mengadopsi bagian paling penting pada SGML dan dengan berpedoman pada pengembangan HTML menghasilkan markup language yang tidak kalah hebatnya dengan SGML.

Seperti halnya HTML, XML juga menggunakan elemen yang ditandai dengan tag pembuka (diawali dengan ‘<’ dan diakhiri dengan ‘>’), tag penutup(diawali dengan ‘’) dan atribut elemen(parameter yang dinyatakan dalam tag pembuka misal
). Hanya bedanya, HTML medefinisikan dari awal tag dan atribut yang dipakai didalamnya, sedangkan pada XML kita bisa menggunakan tag dan atribut sesuai kehendak kita. Untuk lebih jelasnya lihat contah dibawah:

MIS Manager
HRD Manager
Bagian rekrut
Computer Suport team
Permohonan Tenaga kerja baru
Mohon diberikan tenaga kerja baru untuk mengisi lowongan di Departemen MIS


pada contoh diatas , ,dan bukanlah tag standard yang telah di tetapkan dalam XML. Tag-tag itu kita buat sendiri sesuai keinginan kita. Sampai di sini XML tidak melakukan apapun. Yang ada hanyalah informasi yang di kemas dengan tag-tag XML. Kita harus membuat software lagi untuk untuk mengirim, menerima atau menampilkan informasi di dalamnya.




Kenapa Harus Menggunakan XML?
XML untuk saat ini bukan merupakan pengganti HTML. Masing-masing dikembangkan untuk tujuan yang berbeda. Kalau HTML digunakan untuk menampilkan informasi dan berfokus pada bagaimana informasi terlihat, XML mendeskripsikan susunan informasi dan berfokus pada informasi itu sendiri. XML terutama dibutuhkan untuk menyusun dan menyajikan informasi dengan format yang tidak mengandung format standard layaknya heading, paragraph, table dan lain sebagainya. Sebagai contoh apa bila kita ingin menyimpan dan menyajikan informasi notasi musik pada lagu “Indonesia raya”, kita bisa menyimpannya dengan xml seperti contoh dibawah ini.






...


...



Kemudian dengan bantuan software lain misalnya MIDI generator kita bisa mendengarkan musiknya atau kita juga bisa membuat software sendiri yang menampilkan informasi ini dalam bentuk not balok.
Sama dengan HTML, File XML berbentuk teks sehingga bila diperlukan kita bisa membacanya tanpa memerlukan bantuan software khusus. Hal ini memudahkan pengembang aplikasi yang menggunakan XML untuk mendebug programnya. XML lebih fleksible dibanding HTML dalam hal kemampuannya menyimpan informasi dan data. Pada XML kita bisa menyimpan data baik dalam atribut maupun sebagai isi elemen yang diletakkan diantara tag pembuka dan tag penutup.
Kelebihan lain yang dimiliki XML adalah bahwa informasi bisa di pertukarkan dari satu system ke system lain yang berbeda platform. Misalnya dari Windows ke Unix, atau dari PC ke Machintosh bahkan dari internet ke handphone dengan teknologi WAP.

Apakah XSLT Itu?
XSLT adalah kependekan dari eXtensible StyleSheet Language:Transformation, adalah bagian dari XSL yang dikembangkan sebelumnya. XSL adalah Stylesheet yang khusus dikembangkan sebagai komplemen XML, untuk merubah informasi pada XML ke dalam bentuk lain agar bisa ditampilkan di layar, dicetak di kertas atau didengarkan telinga. Pada dasarnya proses ini di bagi menjadi dua bagian proses yakni pertama Transformasi Struktural yang meliputi pengumpulan, pengelompokan dan pengurutan data maupun penyusunan ulang, penambahan dan penghapusan tag dan atribut, dan yang kedua adalah proses merubah format menjadi pixel dilayar, nohtah tinta di kertas atau nada di speaker. Proses yang pertama itulah yang kemudian disebut XSLT, sedangkan yang kedua biasa disebut XSLFO (eXtensible Stylesheet Language:Formatting Object).

Hasil Keluaran XSLT bisa berupa HTML, Text file atau XML dengan format yang baru. Sebenarnya untuk menampilkan dokumen XML agar lebih menarik dilihat di browser bisa dilakukan oleh Cascade StyleSheet. CSS yang sering digunakan untuk memformat HTML bisa juga dipakai untuk XML. Akan tetapi CSS tidak mampu melakukan tugas tugas yang rumit seperti memformat angka desimal, menjumlah, menghitung rata-rata, menampilkan gambar, dan lain-lain. Dan untuk melakukan tugas-tugas itulah kita memerlukan XSLT

XSLT Processor
XSLT Processor atau yang biasa disebut Parser adalah software bantu yang tugasnya menerapkan perintah-perintah dalam XSLT pada dokumen sumber XML, dan menghasilkan dokumen keluaran baik berupa HTML, Text file ataupun XML.

XSLT Processor yang digunakan pada pembahasan-pembahasan dan contoh-contoh dalam buku ini adalah MSXML3 buatan Micosoft. Bila browser kita adalah Internet Explorer versi 5.5 ke bawah, secara default menggunakan MSXML atau MSXML2 sebagai Processor. Sebagian besar contoh dalam buku ini tidak bekerja dengan MSXML dan MSXML2. Untuk mendapatkan MSXML3 anda bisa download secara gratis dari websitenya Microsoft. Anda perlu men-download dua paket, yaitu MSXML itu sendiri beserta SDK-nya dan program XMLinst.exe. Yang disebutkan terakhir adalah utility untuk mengganti default XSL Processor pada internet Explorer dengan MSXML3. Setelah anda mendownloadnya, lakukan hal dibawah ini.

Buka Command prompt
Ketik xmlinst /u lalu tekan enter – perintah ini digunakan untuk melepaskan default XSL Processor yang digunakan sebelumnya.
Ketik regsvr32 msxml3.dll lalu tekan enter – Perintah untuk meregister file dll¥Ketik xmlinst lalu tekan enter – menggunakan MSXML versi terbaru sebagai default XSL Processor pada Internet Explorer

Untuk lebih jelasnya anda bisa membacanya pada dokumentasi MSXML3 yang disertakan saat anda mendownloadnya.
Versi terakhir dari MSXML yang dikeluarkan Microsoft saat buku ini ditulis adalah versi 4. Pada MSXML4 ini, XSL Processor tidak terinstall secara default pada Internet Explorer menggantikan versi sebelumnya, tetapi bekerja paralel dengan MSXML versi sebelumnya. Diperlukan script khusus pada file HTML untuk memanggilnya. Bila anda hendak menggunakannya sebagai XSLT Processor di komputer anda, baca baik-baik Microsoft MSXML4 Parser SDK yang disertakan pada saat anda mendownloadnya.

Selain dari Microsoft, anda juga bisa menggunakan parser dari tempat lain misalnya Saxon yang dikembangkan oleh Michael Kay dapat anda peroleh secara gratis dari site http://users.iclway.co.uk/mhkay/saxon/instant.html. Satu lagi parser yang bisa digunakan adalah xt yang bisa anda peroleh di http://www.jclark.com/xml/xt.html. Cara mempergunakan kedua parser tersebut bisa anda baca di website masing-masing. Tidak menutup kemungkinan anda juga mendapatkan parser lain yang banyak bertebaran di internet. Sekali lagi, baca baik-baik manual user yang disertakan setiap parser yang akan anda gunakan.

Contoh Sederhana
Untuk memahami bagaimana XML dan XSLT bekerja, perhatikan contoh berikut ini:

Saya sedang belajar XML
Simpanlah document diatas dengan nama belajar.xml
XSLT yang diperlukan adalah sebagai berikut





XML Saya yang Pertama










simpanlah dokumen XSLT ini dengan nama belajar.xsl. Bila anda menggunakan MSXML3 sebagai parser, anda harus menambahkan satu baris heading standard sehingga dokumen XML Anda akan menjadi seperti berikut:



Saya sedang belajar XML
Setelah itu anda bisa langsung menjalankannya di browser anda. Anda akan melihat tulisan “Saya sedang belajar XML” di jendela browser anda dan tulisan “XML Saya yang Pertama” sebagai title halaman web anda.

selengkapnya xml.pdf
Read More … Pengantar XML
Bookmark and Share
0 komentar

WEB Security

1 First-Look
Pembahasan tentang web programming belum lengkap apabila belum mempelajari tentang keamanan dalam aplikasi. Fasilitas yang melimpah, fungsi yang sangat banyak tidak akan berarti apabila aplikasi kita gagal dalam hal pengamanan data.

Pada artikel ini, kita akan mempelajari bagaimana mengamankan komunikasi antara server dan client melalui SSL. Kita juga akan mempelajari tentang 10 celah keamanan pada aplikasi web dan mempelajari bagaimana cara menanggulanginya.

2 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 Artikel ini bertujuan agar kita mengetahui penggunaan teknologi ini untuk mengamankan komunikasi antara server dengan client.

2.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.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  rerisign. Menentukan pemilihan CA adalah tanggung jawab atau wewenang dari seorang admin untuk memberikan sebuah sertifikat keamanan yang berlaku pada server.

Apabila pada suatu kasus ditemukan tidak adanya certificate dari CA, sebuah certificate temporer (sementara) dapat dibuat menggunakan tools dari Java 1.4 SDK. Perlu Anda catat bahwa client biasanya tidak melanjutkan transaksi yang memerlukan tingkat kemanan yang tinggi dan menemukan bahwa certificate yang digunakan adalah certificate yang kita buat.

2.3 Membuat certificate private key
Untuk menyederhanakan permasalahan ini, akan lebih mudah bila dengan melakukan operasi dimana certificate disimpan. Hal ini dapat ditemukan do direktori

%APP_SERVER_HOME%/domains/domain1/config.

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

Selanjutnya, klik pada HTTP Listener, dan pada kolom kanan klik tombol New. 

Pada screen diatas merupakan hasil dari klik dari New button dengan disertai contoh nilai yang
sudah terisi.

Lakukan restart pada server. Konfigurasi baru kita dapat kita coba dengan mengakases alamat :

 https://serverAddress:listenerPort/index.html

Untuk dapat menggunakan komunikasi yang aman antara client dan server, lakukan redirect pada user ke secure listener port ketika mengakses aplikasi Anda 3.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. Berikut ini adalah 10 celah tersebut dan cara agar kita dapat mengatasi masalah tersebut.

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

II. 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. Akan tetapi, Mereka tidak menjalankan pengecekan dari checkpoint sebelumnya : dimana apabila user berhasil melewati halaman login, mereka dapat bebas menjalankan operasi. Masalah lain yang berhubungan dengan access control adalah:

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

III. Broken Authentication dan Session Management
Authntication 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. Salah satu cara yang dapat digunakan untuk mencegah terlihatnya session ID oleh seseorang pada suatu jaringan yang sama adalah menghubungkan komunikasi antara sever dan client pada sebuah SSL-protected channel.

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

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

VI. 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/someActionsearchString=jedi'%20AND%20true;%20DROP%20DATABASE;'

SQL query yang terbentuk adalah seperti ini :

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.

VIII. 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. Selain itu, menggunakan algoritma enkripsi yang sudah ada akan lebih baik daripada membuat algoritma sendiri. Anda cukup memastikan algoritma yang akan digunakan telah diakui oleh public dan benar-benar dapat diandalkan.

IX. 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 jumlahyang 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.

X. 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 masihaktif.
• 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. 


Dikutip dari:
Pemrograman WEB,Versi 1.0,April 2007 , J.E.N.I
Read More … WEB Security
Bookmark and Share
0 komentar

Membuat WEB Hosting Profesional sendiri menggunakan ISP Panel dan Sistem Operasi OpenSUSE 10.3


Apa yang dimaksud dengan Web Hosting:
Web Hosting adalah salah satu bentuk layanan jasa penyewaan tempat di Internet yang memungkinkan perorangan ataupun organisasi menampilkan layanan jasa atau produknya di web / situs Internet. Siapa saja yang membutuhkan Web Hosting:

Seperti telah dijelaskan diatas, setiap orang ataupun perusahaan dapat menyewa tempat atau memanfaatkan jasa web hosting ini, didukung dengan kemajuan teknologi informasi yang ada saat ini maka pemanfaatan jasa web hosting merupakan sarana alternatif yang handal untuk: Promosi, Menyebarkan Informasi, Berjualan, Layanan Publik sampai dengan sekedar tempat untuk menumpahkan isi hati yang kelabu ke dalam buku harian berbasis web (blog: web log) akibat ditinggal kekasih.

Mengapa Perlu Web Hosting:
Kecepatan menyebarkan informasi tentang Jasa, Produk, Layanan Publik dan lainnya merupakan salah satu tolok ukur keberhasilan bisnins perorangan atau perusahaan, 

Contoh Pertama : di Indonesia dengan sekitar 100 juta pengguna telepon genggam yang tentu saja dapat tersambung ke internet melalui gprs, tidak ada alasan lagi untuk tidak tersambung ke duani maya, bahkan di daerah terpencil sekalipun.

Contoh kedua: Seorang mahasiswa kedokteran, dengan dana yang terbatas, untuk mengantisipasi membeli buku kuliah kedokteran yang harganya bisa mencapai jutaan rupiah, dapat dengan mudah memperoleh informasi ilmu pengetahuan dan teknologi melalui situs web, dan ini menjadi tanggung jawab penyelenggara pendidikan untuk menyediakan layanan web site guna memajukan pendidikan. Bahkan seorang dosen sebaiknya memiliki web site.

Kapan anda membutuhkan Situs Web:
Disaat anda ingin memasarkan produk atau jasa melewati batas kabupaten, propinsi, negara, samudra dan benua, disaat anda ingin orang lain memperoleh informasi yang benar mengenai hal-hal kemanusiaan, disaat anda ingin menyebarluaskan pengetahuan demi kesejahteraan sesama manusia, disaat anda ingin melakukan transaksi bisnis yang memudahkan pelangan anda menjangkaunya dari sebuah vila tempat peristirahatan dengan privasi yang tinggi, disaat itulah anda membuthkan layanan web hosting.

Dimana menyewa Web Hosting:
Ratusan bahkan ribuan penyelenggara jasa web hosting, ada dapat memulainya dengan mencari dari mesin pencari google atau yahoo, beberapa penyedia jasa layanan web hosting di indonesia. 

Teknologi apa yang digunakan:
Salah satu teknologi yang digunakan adalah fail over hosting, teknologi ini memungkinkan layanan anda tetap online 24 jam karena dudukung oleh beberapa server komputer yang secara otomatis akan menggantikan tugas server komputer yang mengalami kerusakan Bisakah kita membuat Web Hosting sendiri Membuat Web Hosting sendiri bukan hal yang mustahil dengan adanya gerakan opensource dan free software kita dapat membuat WEB Hosting profesional sendiri. Salah satu caranya dengan menggunakan software management atau biasa disebut dengan Control Panel atau Cpanel untuk tutorial kali ini penulis akan menggunakan free software “ISP Panel” yang dapat di unduh dari http://www.ispconfig.org Installasi ISP Panel.

Sebelum kita menginstall ISP Panel pastikan software requirement dibawah ini berjalan,
1. Apache Webserver 1.3.12 atau diatasnya
2. Sendmail atau Postfix (Sebagai software MTA / Mail Transfer Agent)
3. Procmail
4. Quota Package (Yang digunakan untuk membatasi space hardisk )
5. ProFTP atau vsftpd (FTP server)
6. PHP 4.0.5 atau lebih dikarenakan ISP-Panel menggunakan PHP sebagai bahasa pemograman.
7. MySQL data base
8. POP3/IMAP / Mail server (contoh. gnu-pop3d, qpopper, ipop3d, popa3d or vm-pop3d) dan
(Courier-Imap, Dovecot)
9. OpenSSL dan mod_ssl yang digunakan untuk membuat SSL virtual hosts
10. BIND8 / BIND9 (DNS server)
11. iptables atau ipchains
12. gcc, cpp, dan c++ compiler.
Pada kesempatan kali ini penulis akan memaparkan installasi tersebut satu persatu termasuk installasi ISP
Panel. Dengan menggunakan OpenSUSE installasi Apache dan PHP dapat dilakukan dengan mudah sekali yakni dengan menggunakan YAST2.


dengan mengguanakan picture patern


Dengan menggunakan langkah diatas kita dapat langsung menginstall seluruh software requirement. Setelah
seluruh software requirement terinstall dengan baik ada baiknya kita cek satu persatu apakah sudah terinstall
dengan baik atau belum dengan menggunakan peritah service
● service apache2 start (Untuk Apache Web Server)
● service named start ( Untuk DNS Server)
● Service mysql start ( Untuk MySQL Server)
● Service postfix (Untuk Postfix / MTA )
Setelah seluruh paket software diatas berjalan dengan baik langkah selanjutnya membuat konfigurasi untuk
masing-masing paket pendukung tersebut. Dapat dilihat pada panduan http://www.opensuse.or.id dan pastikan
seluruh konfigurasi berjalan dengan baik.
Setelah seluruh konfigurasi service-service diatas berjalan dengan baik kita lanjutkan dengan melakukan
extrak ISP Panel yang telah di download dengan cara
# tar -xzvf ISPConfig-2.2.24.tar.gz

Setelah melakukan perintah diatas proses installasi akan meminta anda untuk memberikan opsi pilihan antara
lain :
  • Bahasa yang akan anda gunakan pada saat proses installasi berlangsung. 
  • Proses installasi akan di teruskan atau tidak
  • Perjanjian penggunaan software ISP Panel
  • Proses installasi ini akan menggunakan mode apa ? Pilihan yang tersedia adalah mode standard dan mode expert untuk totorial kali ini penulis memilih mode standard.
  • Pertanyaan selanjutnya adalah apakah didalam PC kita terdapat POSTFIX apabila ada jawab Yes
  • Kemudian di tanyakan tentang FTP server dan jawaban nya Yes juga dan tunggu beberapa saat karena proses co,mpile mulai berlangsung dan sebaiknya kita minum kopi atau susu hangat dulu
  • Proses selanjutnya adalah proses pemilihan cryptograpy yakni keamanan pada proses transmisi data kali ini penulis memilih R sebagai default
  • Selanjutnya di minta mengisikan coutry code yakni code Negara yang kita cintai yakni ID
  • Untuk state, locality, organization name, organization unit,common name,email address dan Certificate validity dapat anda isi dengan yang sesuai dengan informasi pada masing-masing tempat. Pertanyaan tersebut diatas digunakan untuk certificate request / Distinguished Name. Pertanyaan diatas akan muncul beberapa kali dan dijawab sesuai dengan data masing-masing.
  • Perntanyaan selanjutnya ada proses Enrypting data penulis menjawab N karena hanya akan digunakan untuk LAN apabila akan digunakan untuk Hosting On-line penulis menganjurkan untuk menjawab Yes dan tunggu beberapa saat karena proses compiling di lanjutkan. jangan lupa minum kopinya
  • Pertanyaan selanjutnya adalah apabila ada pernyataan di tujukan ke siapa ? secara default di gunakan postmaster So tinggal enter aja ok
  • Nah ini dia pertanyaan yang harus dijawab dengan hati-hati SQL server itu diletakan dimana? Karena kalau salah dia akan tanya terus sampai jawaban ini benar (Jawaban yang penulis lakukan adalah No IP tempat SQL Server di letakan)
  • User untuk SQL Server adalah root
  • Password secara default tidak ada jadi enter aja apabila ingin di beri password bisa di isi pada file /etc/my.cnf
  • Selanjutnya isi dengan nama database yang akan kita isi dengan db_ispconfig
  • Kemudian ditanya pada IP berapa ISP Panel ini akan di letakan, Penulis menjawab dengan yang sesuai ip komputer. Untuk pertanyaan Hostname di isi dengan www dan pertanyaan domain bisa disi dengan domain yang telah teregister atau dengan domain yang telah di setup pada DNS Server.
  • Pertanyaan selanjutnya adalah protocol yang akan di gunakan untuk membuka WEB ISP Panel HTTP atau HTTPS dan selesai proses installasi ISP Panel. Tes Uji Coba ISP Panel dengan browser kesayangan anda http://www.namadomainyangditulis:81 apabila masuk tuliskan untuk user name admin dan password admin.

Write By: 
Bonnie Kurniawan/ kurniawan@opensuse-id.org


Read More … Membuat WEB Hosting Profesional sendiri menggunakan ISP Panel dan Sistem Operasi OpenSUSE 10.3
Bookmark and Share
2 komentar

About Joomla dan instalasi Joomla

PENGENALAN JOOMLA

1.1 Tentang Joomla
Joomla adalah sebuah Content Managemen System yang dapat digunankan oleh siapa saja untuk keperluan pembuatan website, mulai dari yang sangat sederhana sampai dengan website yang sangat kompleks. Berikut beberapa jenis website yang dapat dibangun dengan Joomla.

1. Website corporate atau portal
2. Website e-commerce
3. Website untuk perusahaan kecil
4. Website untuk organisasi Non-profit
5. Website untuk Pemerintah
6. Website untuk keperluan internet
7. Website untuk sekolah dan Perguruan Tinggi
8. Website Pribadi atau blog
9. Website untuk komunitas dan portal
10. Website untuk majalah, koran, dan tabloid
11. Dan masih banyak lagi……

Begitu banyak aplikasi yang dapt ditangani oleh Joomla, tak heran kalau Joomla menjadi pilihan banyak orang dalam pembuatan website-nya. Di samping itu, Joomla juga mudah di installasi, mudah dalam pengelolaannya dan dapat dimodifikasi sesuai kebutuhan kita. Oleh karaen itu Joomla mempunyai prinsip, fleksibel, simple, elegant, customizable, dan powerful.
Joomla merupakan pengembangan dari open source project Mambo, yang dahulu sering disebut sebagai Mambo Open Source atau MOS. Mambo sebenarnya dikembangkan oleh sebuah perusahaan yang bernama Miro. Miro memberikannya kepada komunitas open source (komunitas pengembang) sebuah variant WCMS yang gratis untuk dikembankan. Setelah menyerahkannyapada komunitas, MOS
berkembang dengan baik. Pada bulan Agustus 2005 terjadi perselisihan prinsip antara pihak komunitas pengembang MOS dengan MIRO. Akibat perbedaan prinsip ini, beberapa orang tim MOS keluar dari project tersebut dan akhirnya membentuk project open source baru yang diberi nama Joomla. Kata

Joomla sendiri diambil dari kata Jumla, bahasa Suaheli dari penduduk Kenya dan Tanzania di benua Afrika yang berarti “all this together”.

Pada tanggal 17 September 2005, dirilis Joomla versi 1.0.0. Versi ini merupakan versi alias dari Mambo versi 4.5.3. dan pada tabel berikut akan memperlihatkan perkembangan versi Joomla sampai saat ini.
Joomla secara terus menerus dikembangkan melalui berbagai aktivitas oleh komunitas yang sangat aktif dan tertarik dengan system ini.

1.2 Struktur File dan Direktori Joomla
Pada bagian ini kita belajar tentang struktur file dan direktori yang digunakan oleh Joomla. Seperti kita ketahur Joomla adalah sebuah website content management yang powerfull, maka sudah pasti mempunyai banyak file dan direktori.

1.2.1 Struktur File
File yang kita bahas adalah file-file penting yang terletak di root direktori server Joomla, yaitu :
1. Index.php, merupakan file utama untuk menampilkan halaman web Joomla. Beberapa pengaturan joomla terdapat pada file ini. Jika kita mengakses file ini, berarti kita membuka halaman depan website Joomla. Misalnya: www.lintau.com/index.php.

2. Configuration.php, merupakan file yang terbentuk saat kita melakukan proses instalasi Joomla. Pada file ini terdapat pengaturan untuk koneksi ke database, dan pengaturan penting lainnya. Jika file ini rusak, website Joomla tidak akan berfungsi.

3. Copyright.php, file ini berisi tentang hak cipta website CMs Joomla, walaupun sebenarnya lebih tepat disebut copyleft.

4. License.php, file ini berisi informasi tentang lisensi website CMS Joomla.

5. Mainbody.php, ini merupakan file pendukung yang sangat penting dalam mengatur tampilan berita di website.Joomla.

6. Pathway.php, sebuah file yang berfungsi untuk menggmbarkan urutan proses aplikasi yang ada di Joomla.

1.2.2 Struktur Direktori
Joomla mempunyai beberapa direktori yang mempunyai fungsi tersendiri. Setiap direktori mempunyai subdirektori dan file-file pendukung sesuai fungsinya. Berikut ini adalah struktur direktori Joomla.

1. Administrator, ini merupakan direktori khusus administrator untuk keperluan pengelolaan website Joomla. Mulai dari proses installasi modul, komponen. Mambot, bahasa sampai dengan proses maintenance web secara keseluruhan.

2. Cache, sebuah direktori khusus yang berfungsi untuk menyimpan data sementara di computer pengguna, tujuannya adalah mempercepat proses loading web jika dibuka pada waktu lain fungsinya sama dengan memori computer.

3. Components, merupakan direktori tempat menyimpan seluruh komponen yang terinstall di website Joomla.

4. Editor, sebuah direktori yang berfungsi untuk menyimpan berbagai editor yang diinstall pada website Joomla.

5. Help, sebuah direktori khusus untuk menampilkan bantuan jika kita menemukan Kendala dalam menggunakan Joomla.

6. Images, adalah direktori tempat menampung file-file gambar guna keperluan website Joomla.

7. Includes, ini merupakan direktori pendukung bagi aplikasi joomla yang lainnya.

8. Installation, direktori yang digunakan dalam proses installasi website Joomla. Jika proses installasi selesai, direktori ini sebaiknya dihapus, untuk mempertimbangkan keamanan web dimasa dating.

9. Language, sebuah direktori khusus untuk menampung jenis-jenis bahasa yang dapat digunakan di website yang multi bahasa.

10. Mambots, sebuah direktori untuk menampung tool tambahan dari Joomla, Misalnya, mos images, mos pagebreak,dll.

11. Media, sebuah direktori yang diperuntukkan untuk menyimpan dan mengupload file-file ke dalam website Joomla, baik file gambar maupun teks.

12. Modules, tempat menyimpan modul-modul yang terinstal di website Joomla.

13. Templates, tempat menyimpan semua template yang terinstal di website Joomla. 

Berikut tampilan direktori pada Joomla:
Administrator/backups/
Administrator/components/
Administrator/modules/
Administrator/templates/
Cache/
Components/
Images/
Images/banners/

Aplikasi Pendukung Joomla Seperti telah kita bahas di awal, joomla adalah salah satu website bersifat Content Management System (CMS) yang sangat banyak digunakan saat ini. Sebagai suatu CMS yang berlisensi GNU(General Public License) http://www.gnu.org/copyleft/gpl.html#SEC1, semua aplikasi pendukungnya adalah aplikasi berlisensi yang sama.

Berikut ini adalah aplikasi pendukung yang mutlak ada sebelum Joomla diinstal pada computer Anda.
1. Aplikasi PHP, aplikasi PHP mutlak diperlukan karana Joomla sendiri dibuat menggunakan bahasa pemrograman PHP. Aplikasi PHP ini dapat anda download di website resminya, www.php.net

2. Web Server Apache, karena Joomla menggunakan bahasa pemrograman PHP, diperlukan sebuah server untuk mendukung aplikasi tersebut. PHP adalah bahasa pemrograman web bersifat server side. Aplikasi server yang dibutuhkan oleh Joomla adalah Apache. Silahkan download di alamat www.apache.org.  Instalasi Joomla

2.1 Langkah-langkah men-download Joomla :
1. Buka program Internet Explorer, ketikkan alamat website Joomla pada address bar, yaitu www.joomla.org, lalu klik enter.

2. Setelah itu kita akan masuk ke Home dari Website Joomla.

3. Lihat pada menu di sebelah kiri bawah website, menu tersebut adalah menu untuk mendownload file  package Joomla versi 1.0.13. Lalu dobel klik pada menu tersebut.

4. Setelah itu akan muncul window baru klik link downloadnya ,kemudian save file.

2.2 Langkah-langkah meng-install Joomla

6,selanjutnya klik next 

7. Lalu isi kotak isian yang telah disediakan. Kotak isian “Host Name” diisi dengan “Localhost”, kotak isian “MySQL User Name” diisi dengan nama user dari MySQL, kotak isian “MySQL Password” diisi dengan password dari MySQL, dan kotak isian “MySQL Database Name” diisi dengan nama folder tempat kita meng-ekstrak file Joomla tadi. Sedangkan kotak isian yang terakhir tidak perlu kita ubah.

8. Pada tampilan selanjutnya, akan muncul beberapa kotak isian. Kotak isian “URL” dan “Path” tidak perlu diubah, karena akan mengubah semua settingan direktori dari Joomla. Kotak isian “Your E-mail” diisi alamat e-mail kita, dan “Admin Password” diisi dengan password yang akan kita gunakan pada saat login sebagai administrator. Default password yang terdapat pada kotak isian “Admin Password” dapat kita ubah sendiri sesuai keinginan agar mudah kita ingat.

9. Berikutnya akan tampil jendela yang memberitahukan bahwa anda telah sukses menginstall Joomla. Pada jendela di atas terdapat username dan password yang harus anda ingat untuk membuka jendela Control Panel dari Joomla.

10. Setelah selesai, tutup jendela tersebut dan buka jendela explorer baru. Hapus folder “Installation” yang terdapat di dalam folder Joomla yang telah kita buat tadi. Pilih Yes pada jendela konfirmasi di atas.

11. Setelah itu ketikkan alamat / URL Control Panel Joomla (contoh,http://localhost/joomla/administrator) kita pada address bar dan tekan Enter.)

sumber: http://hasiaulia.net/2009/07/16/download-tutorial-joomla-lengkap/
Read More … About Joomla dan instalasi Joomla
Bookmark and Share