Friday, May 18, 2007

Kesalahan Programmer Yang Sering Terjadi

Ada beberapa hal yang menarik selama saya mendalami bahasa pemrograman. Sudah rahasia umum kalau dalam memprogram kita wajib TRIAL & ERROR. Dalam hal ini saya mencoba mengungkit kesalahan masa lalu saya, ketika baru belajar bahasa pemrograman, tentu saja agar tidak diulangi, oleh saya sendiri khususnya, dan rekan-rekan pemula pada umumnya. Di bawah ini adalah kesalahan-kesalahan saya, dan kesalahan-kesalahan yang pernah saya lihat (kadang-kadang kesalahan sepele juga bisa dilakukan oleh programmer yang telah handal) :


Tidak bisa membedakan function (method) dan variable (attribute)
Para pemula sering tidak bisa membedakan function dan variable. Hal ini mungkin disebabkan kurangnya pemahaman tentang function dan attribute itu sendiri.

Penamaan method, attribute atau class
Apalah arti sebuah nama? Hmmm… tampaknya hal tersebut tidak berlaku di bahasa pemrograman. Penamaan merupakan hal yang sangat penting. Dari pengalaman saya, banyak programmer pemula membuat nama class, method atau attribute dengan nama mereka sendiri, atau nama teman. Untuk program dengan sepuluh atau dua puluh baris, hal tersebut masih bisa diatasi. Kalau programnya sudah ribuan baris? Menurut saya, penamaan harus sesuai dengan tujuan dari dibuatnya class, method atau attribute tersebut. Misalnya, untuk menyimpan nama depan, dibuatlah attribute dengan nama “namaAwal”.

Tidak mengerti tipe data
Untuk pemula, tipe data memang bisa menjadi hal yang membingungkan. Dibutuhkan waktu luang untuk memahami tipe data agar dasar memprogram kuat.

Syntax error
Kesalahan ini masih bisa dimaklumi, karena memang tidak mungkin seluruh syntax di sebuah bahasa pemrograman kita kuasai. Tetapi, kalau syntax-syntax dasar sebaiknya dikuasai.

Logic error
Waks. Yang ini tidak bisa dimaklumi. Latihan memang cara yang ampuh untuk menguasai logika. Meluangkan waktu untuk belajar algoritma bisa membantu mengembangkan logika berpikir.

Lupa membuat variabel
Kadang-kadang, saking bersemangatnya memprogram, saya lupa mendeklarasikan variabel yang saya gunakan. Bagi yang mempunyai problem yang sama, sebaiknya lebih teliti aja deh…

Lupa inisialisasi variabel atau object

Lupa inisialisasi variabel atau object juga sering terjadi. Kalau di C++, bila lupa menginisialisasi variabel, ketika variabel tersebut ditampilkan ke layar, akan muncul karakter-karakter aneh. Di dalam bahasa Java, bila sebuah object belum diinisialisasi, tetapi sudah digunakan, maka akan muncul error NullPointerException. ·

Lupa jumlah/tipe data argumen pada method

Lebih mirip syntax error. Tetapi, mungkin terjadi karena kebiasaan. Misalnya, di C++ main method tidak berisi argumen, di Java, main method berisi satu argumen.

Lupa/salah preprocessor directive
Hal ini juga sering terjadi. Di dalam C++, preprocessor directive seperti #include sering terlupa, atau salah buat, seperti #include.

Case-sensitive
Programmer pemula sering tidak memperhatikan penulisan method atau attribute. Sekedar mengingatkan, di dalam bahasa pemrograman yang bersifat case-sensitive (Misalnya: C++, C#, Java), Java berbeda dengan java maupun jAvA.

Titik koma (;)
Titik koma diakhir bahasa pemrograman (C++, C#, Java) sering terlupa.

Kurung kurawal penutup } (C++, C#, Java)
Kadang-kadang kebiasaan lupa menutup pintu ikut terbawa ketika memprogram. Kurung kurawal yang sudah terbuka di awal class atau di awal method lupa ditutup ketika method atau class selesai dibuat.

Salah kurung mis {} jadi () ketika mendefinisikan method atau class
Untuk kesalahan yang seperti ini, bila sudah terjadi akan sangat sulit mencarinya. Karena bentuk kurung kurawal dengan kurung biasa bila terlihat di layar monitor hampir sama. Saran saya, lebih teliti untuk hal-hal kecil seperti ini.

Kurang rapi (yang ini bukan error, tetapi bisa bikin error!!!)
Kebanyakan programmer pemula tidak peduli dengan kerapian di saat memprogram. Letak kode-kode yang berantakan memang bukan error, tetapi bisa mengakibatkan error. Hal ini juga membuat sulit men-trace logic error.


Hmm…. Bila teman-teman punya pengalaman seputar error ketika memprogram, bisa sharing ke kita-kita dunkz…

Semoga berguna...

Thursday, May 10, 2007

Pencurian Password dengan Social Engineering

Pagi ini, ketika baru sign in ym, ada beberapa kerabat nanyain link yang “dikirim” dengan menggunakan Yahoo ID gw. Aslinya sih, gw ga da ngirimin tu link. Hmm….. somethin’ strange negh… Karena penasaran, gw buka link tersebut di browser. Eh, ternyata yang muncul Yahoo Photos. Kejadiannya mirip dengan yang dialami spupu gw. Eh sekarang muncul lagi…

Sebenarnya yang situs tersebut bukan situs Yahoo Photos. Melainkan situs yang dibuat mirip dengan Yahoo Photos. Mungkin sebagian orang bisa tertipu dengan trik ini. Trik lama. Diharapkan dengan trik “membuat situs mirip dengan Yahoo Photos” pengunjung akan menganggap situs tersebut benar-benar situs Yahoo Photos.

Social engineering dengan model seperti ini ditujukan kepada pengguna Internet pemula dan pengguna yang ceroboh. Sebagian pengguna Internet senang klak-klik link yang diberikan tanpa meneliti terlebih dahulu link yang diberikan. Pada kasus gw, biasanya yang dikirimkan adalah sebuah link, kemudian dibubuhi kalimat seperti: “Foto-foto gw waktu liburan”, atau “Foto-foto artis”, atau terlebih lagi supaya lebih menarik “Foto-foto porno artis”, dll, pokoknya yang membuat penasaran.

So, apa yang terjadi ketika link diklik? Seperti yang udah dibilang di atas, muncul situs yang “mirip” Yahoo Photos, lengkap dengan form login. Sebenarnya, bisa dilihat beberapa keganjilan seperti banner di sebelah kanan dan jarak text box Yahoo!ID dan Password. Bila dibandingkan dengan situs Yahoo Photos yang asli (http://photos.yahoo.com) terlihat perbedaannya (Lihat gambar di bawah).



Karena mirip, kebanyakan pengguna (yang ceroboh) dengan suka rela memberikan Yahoo ID dan passwordnya. Selidik punya selidik, ternyata Yahoo ID & password tersebut dikirim ke ihatepakis@gmail.com. Bisa dilihat dari source code html halaman web yang palsu (lihat pada gambar di bawah).


Sedangkan yang asli bisa dilihat seperti gambar di bawah:


Dari susunan source code-nya, web yang asli mempunyai struktur yang lebih rapi dan terstruktur serta enak dilihat. Source code web yang palsu sebaliknya, berantakan.
Dari source code web yang palsu dapat diprediksi bahwa setelah kita memasukkan Yahoo!ID dan password, maka akan muncul login situs Yahoo yang asli. Untuk membuktikannya, saya mencoba memasukkan Yahoo!ID bohongan. Dengan password bohongan tentu saja (lihat gambar di bawah).


Di status bar terlihat situs yang dipanggil oleh si pencuri (lihat gambar di bawah).


Setelah mengeksekusi script untuk mengirim Yahoo!ID dan password ke ihatepakis@gmail.com, halaman di-redirect ke login.yahoo.com. Pengguna akan mengira login-nya gagal, sehingga akan mengulangi memasukkan Yahoo!ID dan password. Kali ini benar-benar situs yang resmi Yahoo sehingga user akan masuk ke account emailnya. Nun jauh di ujung sana, sang pencuri tinggal menunggu email yang masuk ke accountnya memberitahukan Yahoo!ID dan Password korban.

Ada beberapa tips untuk hal-hal seperti ini (untuk pengguna):
  1. Bila sudah terlanjur, segera ganti password.
  2. Bila belum, mulai sekarang, curigalah terhadap link-link yang tidak jelas. Bisa saja link tersebut merupakan tipuan.
  3. Yang kena virus ini, bisa nyoba cara nge-remove sesuai petunjuk bro umat_gila (http://okezone.org/umatblog/archives/20). Btw, ga tanggung jawab kalo makin rusak :D.

Untuk social engineer, ada beberapa tips:
  1. Jangan pakai situs gratisan kalo mo lebih berhasil. Masa’ pake banner yahoo segala? Kan ga lucu. Keliatan banget bo’ongnya. Untuk memancing kakap, ga mungkin cuma pake cacing kecil.
  2. Kalo bisa sih, nama situsnya rada-rada mirip dengan situs aslinya. Misalnya: nyahoo.com, yahhoo.com, dll. Be creative!
  3. Tampilan mesti bener-bener mirip dengan situs aslinya.
  4. Pilihlah kata-kata yang lebih masuk akal. Jangan hiperbola.


Mudah-mudahan berguna… :)