Sabtu, 22 September 2012

10 Pekerjaan terbaik dan 5 profesi terburuk di tahun 2012

Bagi anda para mahasiswa atau pelajar SMA yang merencanakan melanjutkan pendidikan ke tingkat perguruan tinggi, mungkin perlu mempertimbangkan laporan hasil penelitian, survey dari lembaga konsultan karir dan lowongan kerja CareerCast ini sebelum anda memilih bidang keilmuan apa yang ingin anda minati di perguruan tinggi nanti.

Pemilihan pekerjaan ini berdasarkan faktor-faktor lingkungan kerja, tingkat stres pekerjaan, tuntutan fisik, dan proses perekrutannya. Menurut CareerCast, pekerjaan ini memiliki gaji yang besar, lingkungan kerja yang baik, dan menuntut keterampilan yang tinggi.

Berikut ini adalah 10 pilihan pekerjaan terbaik di 2012 versi CareerCast.

1. Ahli Perangkat Lunak
Gaji: US$ 88.142 atau Rp 837,4 juta 
Ledakan media sosial, e-commerce, dan situs berita online mungkin salah satu penyebab pekerjaan ini berada di posisi nomor satu dunia. Ahli perangkat lunak tetap di posisi teratas selama dua tahun berturut-turut. CareerCast mengatakan, perekayasa perangkat lunak juga memiliki beberapa tuntutan fisik dan stres yang minimal. Pekerjaan ini juga memiliki lingkungan kerja yang baik dan prospek perekrutan yang kuat.

Bidang keilmuan: Ilmu Komputer (Sistem Informasi, Teknik Informatika)

2. Analis
Gaji: US$ 88.202 atau Rp 837,9 juta
Aktuaris atau seorang penganalisis bahaya yang mungkin akan terjadi dalam sebuah perusahaan adalah pekerjaan terbaik kedua di dunia menurut CareerCast.

Rupanya, menentukan probabilitas kecelakaan, sakit, kematian, dan kerugian harta benda dari pencurian dan bencana alam serta tidak mengurangi lingkungan sangat diperlukan saat ini.
Bidang keilmuan: Sosiologi. Humaniora, Ekonomi SDM

3. Manajer Sumber Daya Manusia
Gaji: US$ 99.102 atau Rp 941,5 juta
Seorang manajer sumber daya manusia perlu merencanakan, mengarahkan, dan mengkoordinasikan semua kegiatan sumber daya manusia dan staf organisasi untuk mengembangkan pekerja di perusahaan itu.

Bidang keilmuan: Manajemen SDM

4. Ahli Kesehatan Mulut
Gaji: US$ 68.109 atau Rp 647,03 juta
Mereka bukan dokter gigi, tetapi mereka membantu dokter gigi dalam aspek diagnostik dan terapi kelompok atau praktek gigi swasta. Mereka ahli dalam menjaga kesehatan mulut dengan fokus pada teknik kebersihan mulut dan gigi.

Bidang keilmuan: Kedokteran Gigi, Kesehatan Masyarakat

5. Perencana Keuangan 
Gaji: US$ 104.161 atau Rp 989,5 juta
Masalah ekonomi individu atau perusahaan adalah masalah yang cukup umum saat ini. Maka tidak heran ketika seorang perencana keuangan sangat dibutuhkan karena keahlian mereka dalam manajemen portofolio dan membantu individu dalam mengelola dan merencanakan masa depan keuangan mereka.

Bidang keilmuan: Ekonomi, Manajemen Keuangan

6. Audiolog
Gaji: US$ 67.137 atau Rp 637,8 juta
Karier yang berhubungan dengan kesehatan kedua dalam daftar ini adalah audiolog. Profesi ini membantu merawat dan mendiagnosis pasien yang berhubungan dengan masalah pendengaran.

Bidang keilmuan: Kedokteran

7. Ahli Terapi
Gaji: US $ 72.110 atau Rp 688,289,927.65
Membantu orang-orang di bidang yang berhubungan dengan kesehatan juga dapat menghasilkan pendapatan yang cukup. Ahli terapi membantu secara emosional, fisik, serta mental untuk perkembangan pasien. Bantuan itu diberikan hingga pasien sudah mencapai kemandirian.

Bidang keilmuan: Kedokteran

8. Manager Iklan Online 
Gaji: US$ 87.255 atau Rp 828,9 juta
Manajer periklanan online adalah pekerjaan pendatang baru dalam daftar pekerjaan terbaik ini. Melihat perkembangan terakhir dari dunia media sosial dan Internet, beberapa perusahaan mulai melirik industri iklanonline.

Bidang keilmuan: Ilmu Komunikasi (Marketing)

9. Analis Sistem Komputer
Gaji: US$ 78.148 atau Rp 742,4 juta
Analis sistem komputer merencanakan dan mengembangkan sistem komputer untuk bisnis dan lembaga-lembaga ilmiah. Dengan teknologi yang semakin berkembang, pekerjaan ini naik empat peringkat hingga menduduki posisi sembilan.

Bidang keilmuan: Ilmu Komputer (Teknik Informatika)

10. Ahli Matematika
Gaji: US$ 99.191 atau Rp 942,3 juta 
Menganalisis angka bisa mendapatkan pendapatan yang cukup tinggi. Ahli matematika menerapkan teori-teori matematika untuk mengajar atau memecahkan masalah dalam bisnis, pendidikan, atau iklim industri.

Bidang keilmuan: Matematika dan Ilmu Pengetahuan Alam (Matematika)


Selain itu ada lima profesi yang dinilai paling buruk, dalam artian kurang prospektif, berbahaya, serta menyita tenaga fisik lebih banyak ketimbang pemikiran.

Dalam rilisnya, Rabu 11 April 2012, CareerCast menganalisis 200 profesi yang dilakoni masyarakat di Amerika dan seluruh dunia pada umumnya. Menurut konsultan CareerCast, Tony lee, selain upah, prospek serta usaha fisik, kriteria lain untuk profesi terburuk tahun 2012 ialah spesifikasi keahlian dan pendidikan yang diperlukan untuk pekerjaan itu.

"Untuk pekerjaan terbaik perlu banyak lulusan universitas. Tapi untuk masuk pada profesi terburuk ini orang kadang tak memerlukan ijazah," ujar dia seperti dikutip dari CNBC, Rabu 11 April 2012.

Mau tahu apa saja profesi yang dinilai paling buruk? Ini dia daftar lima teratasnya.


1. Penebang kayu
Upah tahunan rata-rata 2012: US$ 32.144 (Rp 295,2 juta).
Upah tahunan rata-rata 2011: US$ 32.109 (Rp 294,9 juta).
Kenaikan gaji: flat.
Penebang kayu dinobatkan sebagai pekerjaan terburuk lantaran mengabaikan keselamatan, jam kerja, serta banyak menyita tenaga. Selain itu tingkat pembayaran gajinya terbilang payah. 

2. Peternak sapi perah
Upah rata-rata 2012: US$ 33.119 (Rp 304,1 juta).
Upah rata-rata 2011: US$ 32.114 (Rp 304,1 juta).
Kenaikan gaji: flat.
Mengapa peternak sapi dianggap pekerjaan yang payah? "Gajinya rendah," kata Tony Lee. Profesi ini pun rentan celaka. Bayangkan jika sapi-sapi itu menendang pemerah susu yang bekerja tanpa alat perlindungan tubuh. Tapi ada satu ironi yang membuat pekerjaan ini makin payah. "Industri susu dijalankan korporasi besar dengan memeras tenaga masyarakat kecil yang tak memiliki pendidikan," ujar Lee.

3. Tentara
Upah rata-rata 2012: US$ 36.261 (Rp 333 juta).
Tahun ini tentara masuk dalam daftar pekerjaan paling buruk. Selain karena berbahaya, membuat stres dan menyita tenaga, para pelakunya kerap tak mendapat informasi atas apa yang mereka jalani dari komandannya. "Ini jenis profesi yang membuatku ingin segera pensiun." kata Lee.

4. Pekerja tambang minyak
Upah rata-rata 2012: US$ 32.132 (Rp 331,8 juta).
Upah rata-rata 2011: US$ 32.143 (Rp 331,9 juta).
Kenaikan gaji: flat.
Anda mungkin terkejut saat mengetahui teknisi minyak dinobatkan sebagai satu dari lima profesi terburuk. Meski industri minyak dianggap sektor bisnis paling seksi, para teknisinya toh bisa dibilang nelangsa. Tony Lee mengatakan hal itu disebabkan oleh tingkat kenaikan gaji mereka terbilang datar padahal lingkungan pekerjaannya sangat berbahaya. "Tingkat kematiannya tinggi," ujarnya.

5. Wartawan Surat Kabar
Upah rata-rata 2012: US$ 35.275 (Rp 324 juta).
Upah rata-rata 2011: US$ 34.275 (Rp 314,8 juta).
Kenaikan gaji: +3 persen.
Jika menjadi wartawan, Anda dihadapkan pada tingkat stres yang tinggi. Tantangan berat juga dihadapi wartawan surat kabar lantaran mereka mesti bersaing dengan media online dan jurnalis amatir (citizen journalist)yang membuat berita di media-media sosial. “Karena industrinya suram, perusahaan koran banyak yang mesti dimerger, bahkan bangkrut," kata Tony Lee.


Namun perlu anda ingat bahwa pada dasarnya semua pekerjaan yang dilakukan secara halal adalah baik. Dan dunia/masyarakat butuh karya dari hasil pekerjaan anda apakah itu yang termasuk profesi terbaik maupun yang termasuk profesi terburuk atau profesi lain yang belum tercantum diatas.


Sumber:
1. http://www.tempo.co/read/news/2012/09/22/215431234/10-Pekerjaan-Terbaik-di-2012
2. http://www.tempo.co/read/news/2012/04/11/092396280/Lima-Profesi-Ini-Dinilai-Paling-Buruk

Kamis, 20 September 2012

Menginstall MySQL Workbench di Linux Ubuntu 11.10

Setelah mencari-cari melalui paman Google akhirnya ketemu juga cara menginstall aplikasi MySQL Workbench di Linux ubuntu 11.10 saya. Dan hasil instalasi berjalan sempurna.



Sebagai informasi bahwa aplikasi MySQL Workbench adalah aplikasi tambahan pendukung yang sifatnya mendekati 'hukum wajib' untuk diinstall juga jika anda menginstall paket DBMS MySQL dari Oracle. Dengan MySQL Workbench anda dapat melakukan fungsi-fungsi yang diperlukan mengelola database secara terpadu dan dalam bentuk visual GUI. Fungsi-fungsi tersebut adalah (1) administrasi (start/stop Server, Security, import/export, dll) DBMS MySQL; (2) membuat rancangan Extended Entity Relationship (EER) diagram sebagai model schema sekaligus melakukan forward engineering menghasilkan DDL script dan mengeksekusinya sehingga database yang diinginkan secara otomatis dapat dibentuk (juga bisa melakukan reverse engineering atau menghasilkan EER diagram dari schema/database yang ada); (3) melakukan SQL Development (secara manual) untuk membentuk database, tabel-tabel, field-field (dan tipe data field), mengisi data pada field-field tabel dan melakukan query/eksekusi script SQL.
Mungkin dengan MySQL Workbench rasanya tidak diperlukan lagi untuk menginstall aplikasi MySQL  Admin dan MySQL Query Browser, dimana semua fungsi tersebut sudah ada di MySQL Workbench.

Baik, agar tidak berlama-lama akan saya uraikan cara instalasinya sebagai berikut:

1. Download dulu aplikasi MySQL Workbench dari alamat web ini. Kemudian anda klik link "MySQL Workbench 5.2.35-1 for Ubuntu 11.10 Oneiric Ocelot i386 deb package", maka otomatis MysSQL Workbench 5.2.35 ini didownload ke komputer anda. Saya memilih versi 5.2.35-1 ini karena versi ini telah ditambahkan patch yang diperlukan oleh pemilik website nya untuk versi Linux ubuntu 11.10. Memang ada MySQL Workbench versi yang terbaru (versi 5.2.43) jika anda mendownload dari website sumbernya, namun bisa saya pastikan versi tersebut tidak akan jalan di Linux ubuntu 11.10 anda (dari website sumbernya tersebut tercantum bahwa versi 5.2.43 diperuntukkan untuk Linux ubuntu versi 11.04 dan 12.04, saya juga heran kenapa yaa gak ada (dicantumkan) untuk versi 11.10??).

2. Sebelum menginstall paket aplikasi MySQL Workbench tersebut, maka lakukan berturut-turut sbb:
       $ sudo apt-get install liblua5.1-0
       $ sudo apt-get install python-pysqlite2
       $ sudo apt-get install python-paramiko
       $ sudo apt-get install libctemlate0
       $ sudo apt-get install libzip1

3. Setelah itu baru anda install aplikasi MySQL Workbench tersebut dengan double klik pada file .deb tersebut dan memilih Install Package, atau dengan perintah :
     $ sudo dpkg -i mysql-workbench-gpl-5.2.35-1.i386.ubuntu-oneiric.deb

Demikian sharing ini, semoga bermanfaat.
       

Rabu, 14 Maret 2012

Aplikasi Web Dalam Java EE dengan Netbeans IDE


I.          PENDAHULUAN
Tutorial ini adalah seri pertama dari rangkaian tulisan mengenai pengembangan aplikasi Java EE (Java Enterprise Edition) yang akan penulis sampaikan.
Untuk diketahui bahwa arsitektur aplikasi Java EE adalah seperti pada gambar 1.1 dibawah. Java EE mengimplementasi arsitektur Three Tier.
Gambar 1.1. Arsitektur Java EE
Sedangkan pendekatan layer untuk pengembangan aplikasi JEE yang diusulkan oleh Derek C. Ashmore dapat digambarkan seperti pada gambar 1.2 dibawah.
Gambar 1.2. Software Layer for JEE Applications.
Dalam tutorial ini  akan didemonstrasikan membuat aplikasi web, mendeploy ke server dan menampilkannya dalam sebuah browser menggunakan NetBeans IDE sekaligus mencoba membuat aplikasi melalui cara ‘drag and drop’ layaknya pemrograman visual menggunakan IDE semacam Visual Basic, Delphi, dan lainnya.
Aplikasi akan menggunakan JavaServer Page (JSP) yaitu index.jsp untuk meminta input nama dan program JSP yang kedua yaitu response.jsp untuk merespon aksi request /submit dari user. Aplikasi juga menggunakan komponen JavaBeans yaitu NameHandler.class untuk menyimpan data yang akan ditampung didalam atribut ‘name’ selama proses HTTP session, dan juga untuk me-retrieve isi dari name yang di kirimkan ke program JSP kedua tersebut.
Adapun sumber daya software yang digunakan untuk pengembangan aplikasi ini adalah:
·    NetBeans IDE – Java version
·    Java Development Kit (JDK) – version 6
·    GlassFish Server versi 3.x
Rancangan deployment aplikasi ini adalah seperti pada gambar 1.3 dibawah.
Gambar 1.3. Deployment diagram aplikasi.
Dalam tutorial ini penulis belum menggunakan database untuk menyimpan data (name) tetapi menggunakan Java Bean dengan atribut name untuk menyimpan data.
Sedangkan gambaran interaksi antar object/komponen aplikasi dapat digambarkan dalam diagram sequence seperti pada gambar 1.4.
Gambar 1.4. Sequence diagram aplikasi.
Untuk singkatnya mungkin kita bisa segera mulai membuat aplikasinya.
II.          MEMBUAT PROYEK APLIKASI WEB
Buka NetBeans IDE anda dan kita akan membuat Proyek baru untuk aplikasi web.
1.  Pilih File > New Project (Ctrl-Shift-N) dari main menu. Pada window yang terbuka maka pada kolom Categories, pilih Java Web. Pada kolom Projects, pilih Web Application selanjutnya klik Next.
2.  Pada tahap 2, isi Project Name dengan HelloWeb pada text box yang ada.
3.  Tentukan lokasi direktori untuk menyimpan proyek di komputer anda. Kalau penulis menyimpannya di direktori D:/ ProgramTry /JavaEE. Gunakan tombol ‘Browse’ untuk memilih direktori keinginan anda.
4.  Tahap ini adalah optional jika anda ingin mencentang checkbox untuk ‘Use Dedicated Folder for Storing Libraries’ yang berarti anda akan Sharing Project Libraries. Jika mencentang maka tentukan lokasi folder libraries.
5.  Klik next, maka panel ‘The Server and Setting terbuka. Pilih versi Java EE yang diinginkan. Penulis memilih versi Java EE 6.0.
6.  Pilih server untuk men-deploy aplikasi anda. Hanya server yang telah teregistrasi di IDE anda yang akan tampil di list. Dalam tutorial ini penulis menggunakan server GlassFish 3.1. Tampak bahwa Context Path server menjadi /HelloWeb, dimana berasal dari nama proyek yang anda berikan pada tahap sebelumnya.
7.  Klik next. Kemudian didalam panel Framework, klik Finish untuk membuat proyek.
IDE akan membuat folder D:/ ProgramTry /JavaEE/HelloWeb. Folder proyek berisi semua source dan metadata, seperti halnya project’s Ant build script. Pryek HelloWeb terbuka didalam IDE. Halaman index.jsp terbuka di editor kode sumber pada window utama. Anda dapat melihat struktur proyek dalam tab window Files (Ctrl-2), dan struktur logik dalam window Project (Ctrl-1).
Gambar 2.1. Struktur Proyek
III.            MEMBUAT DAN MENGEDIT FILE KODE SUMBER APLIKASI WEB
Membuat dan mengedit file kode sumber adalah fungsi utama dari IDE. Pada tahap ini mungkin akan menyita sebagian besar waktu dalam pengembangan aplikasi. IDE mnyediakan kakas-kakas yang lumayan banyak untuk mendukung personel pengembang dari berbagai style (cara) menyusun program, apakah dilakukan secara manual (scratch from zero) atau IDE yang membuatkan kode untuk anda (drag and drop visual components).
III.1. Membuat Sebuah Paket Java dan File Kode Sumber Java
1.  Dalam window proyek, expand node Source Package. Catatan node Source Package berisi kosong sebagai default node package.
2.  Klik kanan pada node Source Package dan pilih New > Java Class. Isikan nama Class dengan NameHandler pada text box yang tersedia dan ketik org.mypackage.hello didalam combo box Package. Klik Finish. Tampil bahwa file baru NameHandler.java akan terbuka di bagian Editor kode sumber.
3.  Didalam Editor kode sumber, deklarasikan variabel bertipe String dengan mengetikkan baris kode berikut di dalam deklarasi class.
String name;
4.  Tambahkan constructor berikut ke class:
Public NameHandler() {  }
5.  Tambahkan baris berikut didalam constructor NameHandler() :
name = null;
III.2. Membangkitkan Kode Sumber Method Getter dan Setter
1.  Klik kanan field name didalam Editor kode sumber dan pilih Refactor > Encapsulate Fields. Maka Encapsulate Fields dialog terbuka, menampilkan field name. Terlihat Field Visibility nya secara default adalah private, dan Accessors Visibility nya adalah public, menandakan bahwa access modifier untuk deklarasi variabel class akan diset sebagai private, sedangkan method getter dan setter akan dibangkitkan dengan modifier sebagai public dan private berurutan.
Gambar 3.1. Dialog Encapsulate Fields
2.  Pada dialog Encapsulate Fields tersebut klik Rafctor. Maka kode method getter dan setter akan dibuat dengan modifier public. Kode java class selengkapnya akan seperti berikut dibawah.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.mypackage.hello;

/**
 *
 * @author Aryo
 */
public class NameHandler {
    private String name;
   
    public NameHandler(){
        name=null;
    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
}
III.3. Mengedit File Default JavaServer Page
1.  Pindahkan fokus ke file index.jsp dengan mengklik tab nya yang tampil pada panel Source Editor.
2.  Tekan bersamaan Ctrl+Shift+8 maka akan muncul Palette disebelah kanan Source Editor, expand HTML Forms dan drag item Form ke posisi setelah tag < h1> didalam Source Editor.
Gambar 3.2. Palette komponen JSP
3.  Isikan beberapa nilai berikut (seperti Gambar 3.3):
·    Action: response.jsp
·    Method: GET
·    Name: Name Input Form
Klik OK. Sebuah tag HTML form ditambahkan ke file index.jsp.
Gambar 3.3. Isian parameter Insert Form
4.  Drag item Text Input dari Palette ke posisi tepat sebelum tag < /form>, kemudian isikan nilai berikut:
·    Name: name
·    Type: text
Klik OK. Sebuah tag HTML -input- ditambahkan diantara tag < form>. Hapus atribut value dari tag ini.
5.  Drag item Button dari Palette ke posisi tepat sebelum tag < /form>. Isikan nilai berikut:
·    Label: OK
·    Type: submit
Klik OK. Sebuah button ditambahkan diantara tag < form>.
6.  Ketik ‘Enter your name:’ tepat sebelum tag < input> pertama, kemudian rubah default text ‘Hello World!’ diantara tag < h1> sampai Entry Form.
7.  Klik kanan didalam Source Editor dan pilih Format (Alt-Shift-F) untuk merapikan format kode anda. File index.jsp anda mestinya akan tampak seperti dibawah ini.

< %--
    Document   : index
    Created on : 06 Mar 12, 14:23:45
    Author     : Aryo
--%>

< %@page contentType="text/html" pageEncoding="UTF-8"%>
< !DOCTYPE html>
< html>
    < head>
        < meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        < title>Index Page
    < /head>
    < body>
        < h1>Entry Form< /h1>
        < form name="Name Input Form" action="response.jsp">
            Type your name :
            < input type="text" name="name" value="" />
            < input type="submit" value="OK" />
        < /form>
    < /body>
< /html>
III.4. Membuat File JavaServer Page
1.  Didalam window Project, klik kanan pada node proyek HelloWeb dan pilih New > JSP. Wizard file baru JSP akan terbuka. Isikan nama file dengan response, dan klik Finish. Tampak bahwa node file response.jsp tampil didalam window proyek dibawah index.jsp, dan didalam Source Editor terbuka file kode sumber baru untuk response.jsp.
2.  Pada Palette disebelah kanan Source Editor, expand JSP dan drag item Use Bean ke posisi tepat dibawah tag < body> pada Source Editor. Maka terbuka dialog Insert Use Bean. Isikan nilai seperti ditunjukkan pada gambar 2.5 dibawah.
Gambar 3.4. Isian Insert Use Bean
·  ID: mybean
·  Class: org.mypackage.hello.NameHandler
·  Scope: session
Klik OK. Tampak bahwa tag < jsp:useBean> ditambahkan dibawah tag < body>.
3.  Drag item Set Bean Property dari Palette ke posisi tepat sebelum tag < h1> dan klik OK. Didalam tag < jsp:setProperty> yang ada, hapus attribut value yang kosong dan edit seperti baris kode dibawah. Hapus attribut value jika IDE membuatnya! Kalau tidak, ia akan menimpa nilai variabel name yang anda passing dari index.jsp.

< jsp:setProperty name=”mybean” property=”name” />
Seperti dijelaskan dalam dokumentasi < jsp:setProperty>, anda dapat men-set nilai property dalam berbagai cara. Dalam kasus ini user menginput dari index.jsp yang menjadi pasangan name/value yang di passing ke objek request. Ketika anda men-set property menggunakan tag , anda dapat menentukan nilai (value) berkaitan dengan nama dari property yang telah terisi dalam objek request (pasangan variabelName/value). Oleh karena itu dengan men-setting property ke name, anda dapat me-retrieve nilai yang ditentukan oleh user peng-input (yang telah disimpan di variabel name di JavaBean).
4.  Rubah text diantara tag < h1> sehingga terlihat seperti dibawah ini.
     < h1>Hello, !< /h1>

5.  Drag item Get Bean Property dari Palette dan letakkan setelah tanda koma diantara tag < h1>. Isikan nilai berikut didalam dialog Insert Get Bean Property
·    Bean Name: mybean
·    Property Name: name
Klik OK. Tampak bahwa tag sekarang ditambahkan diantara tag < h1>.
Perhatian: nama Property adalah case-sensitive. Property “name” harus sama persis dalam response.jsp dan dalam form input index.jsp.
6.  Klik kanan didalam Source Editor dan pilih Format (Alt-Shift-F) untuk merapikan format kode sumber anda. Badan tag < body> dari file response.jsp anda seharusnya seperti berikut:

< %--
    Document   : response
    Created on : 06 Mar 12, 14:59:52
    Author     : Aryo
--% >

< %@page contentType="text/html" pageEncoding="UTF-8" % >
< !DOCTYPE html>
< html>
    < head>
        < meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        < title>response page< /title>
    < /head>
    < body>
        < jsp:useBean id="mybean" scope="session" class="org.mypackage.hello.NameHandler" />
        < jsp:setProperty name="mybean" property="name" />
        < h1>Hello, < jsp:getProperty name="mybean" property="name" />!< /h1>
    < /body>
< /html>
IV.            MENJALANKAN PROYEK APLIKASI WEB
IDE menggunakan Ant build script untuk mem-build dan me-run aplikasi web anda. IDE akan membuat build script berdasarkan pilihan-pilihan yang anda tentukan dalam wizard Poryek baru, demikian pula pada dialog box Project Property proyek (dalam window Proyek, pilihan properti dari menu klik kanan pada node proyek).
1.  Dalam window Proyek, klik kanan node proyek HelloWeb dan pilih Run (F6). Ketika anda me-running aplikasi web, IDE melakukan beberapa tahap:
·  Building dan Compiling kode aplikasi (lihat catatan dibawah). Anda dapat melakukan tahap ini secara terpisah (isolation) dengan memilih Build atau Clean and Build dari menu konteks node proyek kemudian pilih Run.
·  Menjalankan server.
·  Men-deploy aplikasi ke server. Anda dapat melakukan tahap ini secara terpisah (isolation) dengan memilih Deploy dari konteks menu node proyek.
·  Menampilkan aplikasi didalam sebuah window browser.
Catatan: secara default, IDE otomatis melakukan Compile proyek ketika fitur Save dijalankan, sehingga anda tidak perlu meng-compile kode anda lebih dulu untuk menjalankan aplikasi di IDE. Untuk lebih jelasnya mengenai fitur ini anda dapat lihat di www.netbeans.org pada petunjuk bagian Creating, Importing, and Configuring Java Project.
2.  IDE akan membuka output window yang menunjukkan kemajuan proses running aplikasi. Lihat pada tab HelloWeb pada Output window. Pada tab ini, anda dapat mengikuti semua tahap yang IDE lakukan. Jika ada masalah, IDE menampilkan informasi error di window ini.
Gambar 4.1. Informasi progress running
3.  IDE membuka output window yang menampilkan status server. Lihat pada tab Output window dengan nama dari server anda.
Penting: jika server GlassFish gagal untuk start, start server tersebut secara manual dan run lagi proyek. Anda dapat men-start server secara manual dari window Services, dengan klik kanan pada node server dan pilih Start.
Tip: output window server sangat informatif menampilkan masalah running aplikasi web anda. Log (catatan informasi) server juga dapat membantu. Mereka dilokalisasi dalam direktori domain server yang bersangkutan. Anda juga dapat melihat log IDE, dicapai dengan memilih View > IDE Log.
Gambar 4.2. Informasi progress Server
4.  Halaman index.jsp otomatis membuka di browser. Catatan bahwa window browser mungkin membuka sebelum IDE menampilkan output server.
Gambar 4.3. Tampilan index.jsp di browser
5.  Ketik nama anda di text box, kemudikan klik button OK. Halaman response.jsp tampil, menampilkan ‘selamat datang’.
Gambar 4.4. Tampilan response.jsp di browser
V.            MODIFIKASI APLIKASI JAVA BEAN
Pada bagian ini saya ingin sedikit memodifikasi aplikasi JavaBean kita (NameHandler.java). Dalam hal ini saya ingin menunjukkan bahwa JavaBean berperan sebagai business logic dari keseluruhan aplikasi web kita dalam Java EE.
Disini saya menginginkan policy bahwa jika diinput nama dengan nilai ‘aryo’ maka akan menampilkan pesan bahwa nama ‘aryo’ tersebut masuk dalam blacklist.
Adapun perubahan kode di NameHandler.java adalah seperti berikut dibawah.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.mypackage.hello;

/**
 *
 * @author Aryo
 */
public class NameHandler {
    private String name;
    private String blockName="aryo";
   
    public NameHandler(){
        name=null;
    }

    /**
     * @return the name
     */
    public String getName() {
        if(name.equals(blockName)){
            return name="Maaf nama " +name+" di blacklist";
        } else {
            return name;
        }
        //return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
}
Running kembali aplikasi anda maka akan menampilkan seperti dibawah jika nama ‘aryo’ diinput.
Gambar 5.1. Tampilan response.jsp di browser
DAFTAR PUSTAKA
·       www.netbeans.org
·       The J2EE Architec’s Handbook, Derek C. Ashmore, DVT Press, 2004.

Sabtu, 11 Februari 2012

Aspek-aspek Pengujian (Test Penetrasi) Tingkat Keamanan Sistem Aplikasi (Berdasarkan Praktisi Pada Proyek TI)


A.        PENDAHULUAN
Saat ini adalah era information-based society dimana nilai informasi sangat penting dan menuntut kemampuan untuk mengakses dan menyediakan informasi secara cepat dan akurat menjadi sangat esensial bagi setiap organisasi.
Infrastruktur jaringan komputer, seperti LAN dan Internet, memungkinkan untuk menyediakan informasi secara cepat, sekaligus membuka potensi adanya lubang keamanan (security hole) atau vulnerability dari komponen-komponen yang menjaga agar nilai informasi tersebut tetap‘aman’.
Didalam tulisan ini akan dibahas item-item apa saja yang dilakukan dalam menguji (test penetrasi) tingkat keamanan sistem aplikasi komputer. Hal ini berdasarkan pengalaman penulis pada proyek-proyek TI.
Seperti diketahui bahwa teknologi serta teknik ancaman berubah sepanjang waktu, oleh sebab itu item-item kerentanan dan risiko keamanan sistem yang diuraikan ini adalah relatif yang diketahui sampai dengan saat ini. Sehingga kerentanan dan risiko dimasa datang untuk hal yang sama dapat berubah.
B.    KONFIGURASI SISTEM APLIKASI
Dalam kasus ini, pengujian (test penetrasi) tingkat keamanan adalah pada sistem aplikasi komputer yang dapat digambarkan pada diagram Use Case dibawah ini.
Gambar 1. Use Case Sistem Aplikasi
Sedangkan deployment sistem aplikasi memiliki tipikal konfigurasi seperti gambar dibawah.
Gambar 2. Konfigurasi Deployment Sistem Aplikasi
C.    ITEM PENGUJIAN (PENETRASI TEST) SISTEM APLIKASI
Pembahasan berikut adalah uraian setiap item pengujian atau penetrasi test kasus aplikasi ini untuk mengungkap kemungkinan vulnerability yang ada.
1.     Password sent in Plain Text
Password yang tidak dienkripsi pada saat proses login (pengiriman ke server untuk di otentikasi) dapat menimbulkan kerentanan terhadap serangan (penyadapan) dengan teknik MitM (Man-in-the-Middle) yang mengakibatkan hacker dapat dengan mudah melihat kerahasiaan (username & password) user yang sedang login. Apabila hacker bisa mendapatkan password untuk masuk ke dalam aplikasi maka ia dapat memperoleh akses terhadap informasi sensitif, memanipulasi data dan informasi yang ada di dalam aplikasi, serta melakukan tindakan-tindakan lain yang lebih membahayakan.
2.     Unrestricted Access (Client Page)
Biasanya pada web page setelah halaman login berhasil maka akan muncul halaman berikutnya dimana data URL akan muncul pada address bar browser. Pada titik itu pengguna dapat meng-copy data URL tersebut dan dapat menyalinnya kembali ke address bar di lain waktu sehingga tahap login untuk masuk ke aplikasi web dapat dilewati (mengakses halaman aplikasi web tanpa harus melakukan login). Apabila bisa masuk ke dalam aplikasi tanpa melakukan login maka hacker dapat memperoleh akses terhadap informasi sensitif, memanipulasi data dan informasi yang ada di dalam aplikasi, serta melakukan tindakan-tindakan lain yang lebih membahayakan.
3.     Un-expired Token
Token digunakan untuk proses aktivasi user aplikasi dan untuk mempertegas keabsahan user selain penggunaan username-password. Dalam hal token yang tidak memiliki waktu kadaluarsa (dapat menggunakan token yang telah digunakan sebelumnya) maka kegiatan transaksi tidak dapat dimonitor atau diawasi. Vulnerability ini menjadikan aplikasi tidak aman karena dapat di akses oleh siapapun selain pihak pemilik atau penanggungjawab dari pengguna aplikasi ini.
4.     URL Manipulation on file host.ini or info.ini
URL yang diisi pada file host.ini atau info.ini yang biasanya dimaksudkan untuk mempermudah user untuk dapat mengakses langsung ke situs yang dituju bila menggunakan browser dapat dimanipulasi untuk berkunjung ke situs hasil phising oleh pihak yang tidak berhak dilokasi browser tersebut. Manipulasi oleh hacker juga dapat dilakukan melalui cara Social Engineering terhadap user yang dimaksudkan untuk mendapatkan/mengganti informasi yang sensitif tersebut. Kemudian ketika hacker mendapatkan informasi-informasi sensitif maka bisa digunakan untuk melakukan serangan-serangan lebih lanjut.
5.     File Disclosure in XAMPP
XAMPP adalah paket sebuah Web Server (Apache Web server, DBMS MySQL) yang dipakai oleh kasus aplikasi ini. XAMPP memiliki celah yang dapat mengizinkan Attacker untuk men-disclosure suatu file secara remote. Hacker yang berhasil menemukan celah ini dapat melihat informasi mengenai penggunaan hal-hal yang mendukung berjalannya aplikasi dan mencari potensi celah keamanan yang bisa diexploitasi pada aplikasi yang bersangkutan. Informasi yang diperoleh bisa digunakan oleh hacker untuk melancarkan serangan yang lebih berbahaya.
6.     XSS on Client Page and on XAMPP Page
XSS (Cross-Site Scripting) adalah serangan dengan melakukan injeksi script hacker dengan mengirimkan ke web site (web server) sebagai input karakter. Kemudian script malicious tersebut diakses oleh user yang berhak yang kemudian running di mesin user, dimana akan meng-expose cookie dan mengambil informasi-informasi rahasia dari user yang bersangkutan. XSS juga dapat dilakukan dengan menginjeksi URL, dimana nanti dapat melakukan pengubahan terhadap informasi. Hacker yang berhasil menemukan celah ini dapat mengubah tampilan aplikasi (tampilan informasi penting) dan memungkinkan untuk melakukan penipuan terhadap pelanggan. Informasi-informasi rahasia dari XSS dapat digunakan untuk melakukan serangan-serangan lebih lanjut.
7.     Apache Vulnerability: mod_isapi
Adalah celah yang memanfaatkan ekstensi pada Apache yang melayani internet server (ISAPI.dll modules) untuk Host Microsoft Windows untuk mendapatkan akses administrator. Hacker yang berhasil meng-exploitasi celah ini akan mendapatkan akses Administrator dari server web aplikasi yang bersangkutan sehingga hacker dapat memegang kendali penuh terhadap aplikasi web.
8.     SQL Injections on Administrtor Page
SQL Injection adalah sebuah aksi hacking yang dilakukan di aplikasi (web page) client dengan cara memodifikasi perintah/script SQL yang ada di memori aplikasi (web page) client. Ini adalah teknik mengeksploitasi aplikasi web yang didalamnya menggunakan database untuk penyimpanan data. Yaitu dengan menyisipkan dari perintah SQL kedalam suatu parameter maupun suatu form (dgn karakter khusus). Hacker juga dapat memanfaatkan pesan-pesan error dari SQL server untuk mengetahui struktur database yang digunakan dan berpotensi untuk merusak database dari aplikasi web tersebut. Jika celah ini berhasil dieksploitasi maka hacker dapat merubah struktur dan atau data di database.
9.     Multiple Login on Client Page
Adalah Login yang menggunakan user-password yang sama tetapi dengan browser atau PC yang berbeda pada halaman client. Ketika hacker dapat mencuri user-password dengan cara social engineering maka ia dapat mengakses account yang sedang digunakan oleh seorang user tanpa diketahui oleh user bersangkutan. Maka hacker dapat leluasa mengakses informasi sensitif, memanipulasi data dan informasi serta melakukan tindakan-tindakan lain yang lebih membahayakan.
10. Unlimited Login Attemp on Client Page
Adalah percobaan Login dari user yang tidak terbatas ketika user mencoba-coba kombinasi dari username-password nya. Hal ini bisa digunakan oleh hacker untuk menebak-nebak username-password secara manual maupun dengan aplikasi brute force nya untuk mendapatkan akses illegal ke dalam aplikasi. Apabila bisa masuk kedalam aplikasi maka hacker dapat leluasa mengakses informasi sensitif, memanipulasi data dan informasi serta melakukan tindakan-tindakan lain yang lebih membahayakan
11. Non-Priviledge Account Availability on phpmyadmin
Adalah account dengan username admin tanpa password dimana merupakan default instalasi saat menginstall XAMPP (MySQL) yang merupakan fasilitas consol untuk administrator pada XAMPP (halaman web phpmyadmin). Halaman web phpmyadmin ini dapat diakses dari internet. Ketika hacker dapat mengakses halaman login aplikasi database (halaman phpmyadmin) tanpa halangan maka memungkinkannya untuk melakukan brute force terhadap otorisasi username-password pada software database. Jika hacker bisa mengakses database, wewwenangnya sangat minim. Namun walaupun hacker hanya bisa mengakses akun yang tidak memiliki wewenang terhadap aplikasi, akses terhadap direktori aplikasi database ini sendiri sudah merupakan celah yang memungkinkan hacker untuk membuat database dan melakukan input/upload ke mesin database, sehingga mendapatkan akun yang memiliki wewenang.
12. Payment Receipt can be Manipulated
Penyerang dapat mengubah atau memanipulasi data struk transaksi yang dicetak oleh sistem dimana hacker berhasil meng-intercept data dari input form maupun input data. Hacker yang dapat mencetak struk transaksi dengan data palsu (tidak sah) dapat merugikan banyak pihak.
13. Webalizer (on XAMPP) can be accessed in Public
Webalizer adalah fasilitas XAMPP untuk melihat statistik pengunjung yang dapat diakses dari IP public. Hacker yang dapat melihat informasi mengenai penggunaan hal-hal yang mendukung berjalannya aplikasi dan mencari potensi celah keamanan yang bisa dieksploitasi pada aplikasi yang bersangkutan. Informasi yang diperoleh bisa digunakan oleh hacker untuk melancarkan serangan yang lebih berbahaya.
D.    SERVER HARDENING
Pembahasan berikut adalah uraian setiap item pengujian celah keamanan sistem yang berkaitan dengan perangkat keras server dalam kaitannya dengan Sistem Operasi (Linux CENTOS) dan Aplikasi sekuriti lainnya atau disebut Server Hardening. Adapun standard Server Hardening ini mengikuti SANS (SysAdmin, Networking and Security) Institute - www.sans.org.
1.     System patches
System patches sedapat mungkin yang terpasang adalah mengikuti versi yang terbaru. System patches terbaru biasanya sudah menutup vulnerability yang ditemukan.
2.     Disable Unnecessary services
Mematikan services yang tidak diperlukan akan membuat sistem aplikasi lebih aman. Dalam kasus ini services seperti Proftpd, cupsd, sendmail, rpcstatd seharusnya tidak diperlukan dan services tersebut dapat dimanfaatkan oleh hacker dari remote.
3.     Check security on Key Files
Dalam SO Linux, Key Files digunakan sebagai pengganti password untuk otentikasi komunikasi protokol SSH. Key Files yang tidak terproteksi (dapat diakses oleh user yang tidak berhak) menyebabkan celah keamanan sistem.
4.     Default password policy
File Login.defs seharusnya diisi sesuai dengan password policy sekuriti organisasi. Misal: PASS_MAX_DAYS 60; PASS_MIN_DAYS 0; PASS_MIN_LEN 8; PASS_WARN_AGE 7.
5.     Limit root access using SUDO
Sebaiknya user root tidak digunakan (menggunakan SUDO) dimana hal ini adalah default dari Sistem Operasi Linux. Untuk mengijinkan user biasa mengeksekusi sebagai super user bisa dilakukan dengan mengedit file /etc/sudoers.
6.     Only allow root to access CRON
Hanya user root (superuser atau sekelas root) yang boleh mengakses CRON (a time-based job scheduler).
7.     Warning banners
Adalah peringatan yang muncul setelah Login (ke sistem komputer) berhasil kepada users yang sah agar tidak melakukan tindakan/ aksi yang melanggar ketentuan legalitas sehingga dirinya ataupun orang lain dapat melakukan tindakan/ aksi yang ilegal ke sistem komputer tersebut.
8.     Remote access and SSH basic settings
Pengaturan setting untuk penggunaan SSH pada server Linux hendaknya tidak minimum atau tidak default. Misalnya dapat di-setting : PermitRootLogin no; PermitEmptyPassword no; IgnoreRhost yes; RhostsRSAAuthentication no; HostBasedAuthentication no; LoginGraceTime 1m;.
9.     Host-based Firewall protection with iptables
Kejadian koneksi di Firewall sebaiknya di-Logging (dicatat). Hal ini dapat dilakukan dengan setting “-A RH-Firewall-1-INPUT –j LOG”.
10. Xinetd.conf & inetd.conf
Xinetd adalah eXtended interNET service daemon, sebuah file konfigurasi yang aman sebagai pengganti dari inetd. Dengan melakukan pengeditan pada /etc/inetd.conf (/etc/Xinetd.conf) maka dapat mematikan services yang tidak digunakan dengan menambahkan tanda komentar (#) pada awal baris. SO Linux yang hanya digunakan untuk aplikasi khusus umumnya banyak services internet yang tidak digunakan, misalnya finger, telnet, ftp, ssh, dll sehingga dapat dimatikan untuk mengurangi risiko keamanan sistem. Untuk lebih amannya komunikasi dengan jaringan luar maka Xinetd (inetd) dapat dibungkus dengan teknik TCPwrapper.
11. System logging
Syslog adalah mencatat segala kegiatan Sistem Operasi. Catatan ini digunakan untuk kebutuhan audit, yaitu memeriksa sistem jika dibutuhkan, misalnya jika terjadi kesalahan (error) maka administrator dapat lebih mudah mencari sumber kesalahan karena informasinya tercatat dengan rapi. Untuk membantu keperluan audit keamanan sistem maka Syslog sangat membantu.
12. Backups
Demi menjaga kelangsungan operasional sistem tetap berjalan seperti diharapkan maka fasilitas backup/restore sistem perlu diaktifkan. Cracker biasanya menyerang sistem dengan menambah, mengubah file, menginstall program, menghapus file atau program. Ketika pada titik dirasakan sistem mengalami serangan cracker tersebut maka sistem bisa di pulihkan (restore) ke keadaan sebelum serangan keamanan terjadi.
13. Integrity-checking software
Adalah sofware pemeriksa integritas sistem, digunakan untuk memonitor perubahan yang terjadi pada sebuah sistem. Cracker mungkin menambah, mengubah file atau hak akses file, menginstall program, menghapus file atau program. Aplikasi Integrity-checking mengecek file atau program dan membandingkannya dengan database sebelumnya yang dianggap sah oleh administrator. Beberapa Integrity-checking software misalnya Tripwire, Aide, Samhain.
14. Apache security
Beberapa hal untuk mengamankan Apache antara lain: Buang module Apache yang tidak diperlukan dengan memberi tanda # pada baris LoadModule; Samarkan identitias Apache (edit file httpd.conf dan setting [ServerSignature off, ServerTokens Prod]); Pastikan Apache di-running oleh user dan group tersendiri (edit httpd.conf dan setting misalnya [User aryonurutomo] [Group aryonurutomo]); Disable fitur seperti direktori browsing, server side includes, CGI execution, follow symbolic links, multiple options (edit httpd.conf setting [Options –ExecCGI –FollowSymLinks –Indexes –dlsb]); Pastikan hanya root yang punya akses penuh ke apache config dan binaries (chown –R root:root /usr/local/apache, chmod –R o-rwx /usr/local/apache]; Jalankan Apache di Chroot environment yang akan menempatkan proses Apache dalam lingkungan yang terbatas dalam chroot, semua library yang dibutuhkan dipindahkan ke lingkungan chroot.
15. Apache Mod_security module
Mod_security memungkinkan peningkatan keamanan secara keseluruhan pada server Apache dengan menyediakan pengaturan dan konfigurasi tambahan. Modul software mod_security dapat diperoleh di http://modsecurity.org.
16. Xwindow
Pada kasus server Linux khusus untuk menjalankan Apache dan aplikasi khusus, maka Xwindow pada server tidak diperlukan. Nonaktifkan dan atau menghapus Xwindow dapat meningkatkan keamanan dan kinerja. Edit /etc/inittab dan ubah run level ke 3 dan untuk menghapus Xwindow ‘# yum groupremove “X Window System”’.
17. LIDS (Linux Intrusion Detection System (IDS))
Fungsi utama IDS melakukan mandatory access control (MAC), a port scan detector, file protection and proses protection. Sistem sebaiknya di-install LIDS atau Snort atau yang sejenis untuk membantu menghadang serangan dan untuk keperluan audit keamanan sistem.
18. Email Security
Jika disistem terdapat layanan email, maka sebaiknya di-install aplikasi Email security.
19. File Sharing
Jika disistem terdapat layanan File Sharing, maka sebaiknya di-install aplikasi managemen File sharing.
20. Anti-Virus Protection
Sebaiknya server diinstall aplikasi anti virus guna menghindari terjadinya infeksi pada file. Jika mengikuti standart SANS untuk aplikasi anti virus adalah antara lain Clamav, F-prot, Vexira

Demikian sedikit sharing pengalaman berkaitan dengan keamanan sistem aplikasi. Mungkin masih cukup banyak terdapat vulnerability lain yang belum sempat diungkap. Tulisan berikut akan membahas bagaimana mengatasi atau menutup celah keamanan (vulnerability) tersebut dan seberapa mudah/sulit hacker menembusnya serta bagaimana dampaknya terhadap organisasi jika vulnerability tersebut dapat ditembus. Jika tidak sempat maka bisa mengikuti pada kelas kuliah. Semoga bermanfaat.

DAFTAR PUSAKA
Securing Your Network, Ido Dubrawsky, Syngress Publishing Inc, 2007.
Cryptography and Network Security Principles and Practice, Willian Stallings, Prentice HallNovember 2005.
Analisa Keamanan dan Vulnerabilitas Jaringan, Firrar Utdirartomo, Gava Media Yogyakarta, 2004.
Sumber internet.