Archive for the ‘Tips and Trick’ Category

Array: The Power of PHP

1 Comment
Tags: , , , , , ,

Dari judul di atas, bisa ditarik kesimpulan bahwa entry ini akan berisi mengenai tipe data array yang terdapat di PHP. Bahkan dengan kata power yang ada di judul tersebut juga bisa dikatakan bahwa entry ini akan berisi seputar kegunaan, kelebihan dan keuntungan penggunaan tipe data array dalam PHP. Yep, bagi yang sudah pernah mengenal bahasa pemrograman lain seperti C atau Pascal atau Basic, sewaktu beralih atau belajar menggunakan PHP mungkin akan melihat perbedaan yang signifikan dalam arti array.

Array pada dasarnya merupakan suatu tipe data yang dapat menampung serangkaian tipe data yang sama dalam suatu variabel. Bila pada dasarnya kita mengenal tipe variabel seperti character atau char, integer atau int, dan float atau real, maka tipe data tersebut umumnya hanya dapat menampung sebuah data saja bila tidak menggunakan array. Ketika menggunakan array pun, banyak bahasa pemrograman yang menggunakan index atau key dalam array menggunakan angka bulat atau integer yang umumnya dimulai dari 0 (nol).

(more…)

Tag PHP, sepele tapi mematikan

No Comments
Tags: , , , , ,

Pernah mendengar berita mengenai seseorang yang digebukin sampai babak belur oleh tetangganya gara-gara suka melirik istri tetangganya tersebut? Atau mungkin seseorang babak belur karena suka menghidupkan mesin motornya keras-keras tanpa mengindahkan teguran tetangganya yang sudah berkali-kali dilayangkan kepadanya? Saya rasa ini berita yang ga terlalu asing lagi.

Kalau begitu apakah Anda pernah mendengar sebuah website atau proyek jadi babak belur gara-gara salah nulis tag yang ga bisa diterima oleh parser PHP? Yup, mungkin jarang mendengar, karena hal ini sendiri tergantung oleh konfigurasi pada parser yang ada.

Beberapa orang suka menuliskan <? sebagai tag pembuka PHP, tetapi orang lain terbiasa dengan <?php . Satu hal yang harus diperhatikan, biasakan menggunakan <?php. Alasannya bila konfigurasi PHP tidak memperbolehkan short tag seperti <? digunakan, maka babak belurlah proyek atau website yang Anad buat. Yap, hanya untuk alasan kompabilitas saja. Kalau Anda memang “buta” mengenai environment untuk server yang akan menjalankan script yang Anda buat, gunakan saja <?php dan jangan berkompromi soal itu.

Satu lagi alasannya, <? digunakan juga sebagai tag pembuka XML. Bila pada file php.ini Anda menggunakan short tag dan terdapat tag pembuka XML seperti di atas, tentu yang terjadi tidak akan selalu seperti yang diharapkan. Oke, sekali lagi saya katakan, “tidak akan selalu”, jadi yah mungkin saja masih bisa berjalan seperti yang Anda harapkan. :)

Code Readability

No Comments
Tags: , , , , ,

Pernah melihat baris kode seperti di bawah ini?

$a=5;
if($a>3) echo 'big' else echo 'small';

Setelah membaca baris kode tersebut, beberapa orang akan bertanya “apa sih maksud dari kode itu?”. Sedangkan yang lainnya mungkin akan bertanya “aku tahu sih maksudnya, tapi kenapa susah dimengerti ya?”. Atau mungkin ada lagi pertanyaan-pertanyaan lainnya. Dan tentunya untuk orang-orang yang mengerti PHP akan dengan mudah mengatakan bahwa penggalan kode di atas untuk menuliskan kata big atau small sesuai dengan nilai dari variabel $a. Akan tetapi beberapa orang tentu akan sedikit kesulitan dalam membaca kode di atas dan memerlukan lebih banyak waktu untuk mengerti dibandingkan bila saya menuliskan seperti di bawah ini.

$a = 5;
if($a > 3)
{
    echo 'big';
}
else
{
    echo 'small';
}

(more…)

No spam mail anymore?

No Comments
Tags: , , , ,

Apa yang dikatakan para ahli soal spam bahwa lebih baik kita tidak mencantumkan alamat email di manapun yang bisa terlihat secara umum adalah cara yang terbaik untuk menjaga email bersih dari spam dan juga privasi lebih terjaga ternyata tidak ada salahnya. Hal ini sudah cukup terbukti paling tidak untuk saya sendiri. :)

Sebelum saya menyadari mengenai permasalahan privasi dalam penggunaan email, saya cukup sering menampilkan alamat email kepada pihak umum secara terbuka. Akan tetapi sejak lebih dari setengah bulan lalu saya menghapus alamat email saya di beberapa situs yang bisa diakses oleh orang-orang umum seperti di Friendster. Selain itu saya juga mengubah format email untuk menyulitkan email harvester (bot untuk mengumpulkan alamat email) dalam mengenai alamat email saya misalnya dengan mengubah @ menjadi [at]. Kini efeknya pun sudah mulai terlihat.

Bila beberapa bulan sebelum saya sadar mengenai privasi email ini saya mendapatkan sekitar 3 sampai 4 spam setiap harinya (bahkan saya ingat pernah mencapai rekor 10 spam dalam satu hari), kini saya justru hanya mendapat 1 sampai 2 email spam di email saya. Perubahan yang cukup signifikan. :D

Mungkin bagi para pemilik email yang sering mendapatkan spam di emailnya bisa mencoba mencari alamat emailnya di Google. Cukup masukkan alamat email Anda sebagai keyword di Google, dan dari situ akan ditemukan website-website yang menampilkan alamat email Anda secara “mentah-mentah”. Bila Anda merasa memang pernah menulis alamat email tersebut di situs itu, coba untuk menghapus atau mengubahnya agar tidak mudah terbaca. Bila ternyata tidak bisa diubah sendiri, Anda bisa mencoba untuk menghubungi pihak webmaster atau administrator website tersebut untuk bantuan. ;)

Satu hal yang perlu diingat bahwa jangan menulis alamat email di sembarang tempat yang dapat terlihat publik secara langsung. Anggaplah bahwa alamat email itu adalah alamat rumah atau nomor telepon pribadi Anda sehingga Anda tidak memberikan email Anda kepada tiap orang yang tidak Anda kenal secara sembarangan. Kecuali Anda sudah tahu resikonya bila Anda memberikan alamat email Anda kepada orang yang tidak dikenal atau dipercaya, sama seperti bila Anda memberikan nomor telepon, alamat rumah, nomor kartu kredit Anda kepada orang yang belum Anda kenal dengan baik. Begitu juga bila ingin mendaftar di suatu website, usahakan untuk hanya menyerahkan alamat email Anda kepada situs yang terpercaya sehingga alamat email Anda tidak “dijual” kepada pihak yang tidak bertanggung jawab.

Selamat memburu alamat email Anda sendiri ;)

About XSS and CSRF

4 Comments
Tags: , , , , , , ,

Dunia web-developing saat ini sudah berkembang sangat jauh dibanding masa dulu. Banyak aplikasi yang bagus yang terus dikembangkan untuk diimplementasikan melalui interface web. Banyaknya perkembangan dalam dunia web tidak hanya berdampak kepada end-user dan developer, tetapi juga oleh orang-orang yang jahat dan iseng untuk mengganggu kenyamanan orang lain selama menikmati dunia maya.

Beberapa waktu lalu saya sudah pernah menceritakan mengenai SQL Injection yang merupakan salah satu celah dalam pengembangan situs web. SQL Injection sendiri merupakan celah yang mengakibatkan penyusup dapat menyusupkan kode SQL ke server database yang ada.

Saat ini seringkali di dunia web-developing kita mendengar juga kata XSS dan CSRF. Sebenarnya apa yang dimaksud dengan XSS dan CSRF? Kita akan membahas satu persatu.

(more…)

Web development rules!

4 Comments
Tags: , , , , , ,

Sebelum hari ini, saya ga gitu peduli mengenai hal ini. Tapi kemaren tiba-tiba aja saya ga habis pikir kalau untuk berkecimpung di dunia web development, paling ga harus bisa beberapa hal:

  1. HTML
  2. CSS
  3. JavaScript
  4. PHP (Server-side scripting)
  5. MySQL (Database)
  6. Desain Front-end

Yang pertama adalah HTML alias Hypertext Markup Languange yaitu bahasa dasar pembentuk website. Sebuah website harus dibangun didasarkan oleh bahasa ini. Sampai saat ini HTML ini sendiri memiliki 2 standar umum yaitu HTML 4.0 dan juga XHTML 1.0. Yang paling baru adalah XHTML 1.0 yang lebih sering digunakan belakangan karena dukungan timbal balik terhadap CSS.

Yang kedua adalah CSS alias Cascading Style Sheet yaitu bahasa sederhana untuk pemberian style atau gaya pada layout HTML yang ada. Melalui CSS, web designer dapat dengan mudah mengubah jenis huruf (font), warna huruf, style huruf, background, posisi element dan sebagainya. Sebuah website tidak akan tampak “hidup” tanpa CSS.

Yang ketiga adalah JavaScript yang merupakan bahasa pemrograman yang bisa diemplementasikan terhadap elemen-elemen di HTML. Melalui JavaScript, elemen-elemen pada halaman web bisa menjadi dinamis dengan adanya animasi atau perubahan content secara langsung tanpa membuka ulang halaman web tersebut. Teknologi ini disebut sebagai AJAX atau Asynchronous JavaScript and XML. Jadi fungsi JavaScript adalah untuk membuat halaman web lebih “hidup” lagi.

Yang keempat adalah PHP atau singkatan rekursif dari PHP: Hypertext Processor. PHP merupakan bahasa pemrograman server-side. Tentu saja masih banyak bahasa lainnya yang dapat digunakan seperti ASP, ColdFusion, JSP. Komponen inilah yang berfungsi sebagai jantung dari web dinamis.

Yang kelima adalah MySQL yang merupakan software database management system. Banyak pula bentuk software database management system lainnya seperti PostgreSQL, SQL Server, Oracle. Gunanya adalah untuk menyimpan data-data yang diproses oleh server-side scripting seperti PHP atau ASP di atas.

Yang terakhir dan juga terpenting dalam web-development adalah pengetahuan mengenai front-end seperti layout maupun desain interface dari suatu halaman web. Terlihat mudah, akan tetapi justru dapat menyebabkan masalah bagi orang yang tidak terlalu mendalami mengenai hal ini. Perpaduan warna yang salah, posisi menu yang tidak baik, bentuk tulisan yang tidak sesuai dengan isi web, dapat dengan mudah membuat pengunjung website tidak mau kembali lagi ke website yang ada.

Bahkan jika mau ditambahkan dengan beberapa hal kecil yang tidak harus diketahui tetapi justru menjadi nilai tambah untuk diketahui. Pengetahuan mengenai web-server seperti Apache akan menjadi lebih bagus agar dapat mengelola web dengan baik.

Jadi kalau mau belajar banyak hal hanya dalam satu bidang, belajar aja untuk menjadi seorang web-developer. ;)

SQL Injection

6 Comments
Tags: , , , , ,

Di entry kali ini saya akan membahas sedikit mengenai SQL Injection yang merupakan salah satu istilah dalam dunia teknologi khususnya dalam teknologi database. Kebetulan hari ini saya mengikuti mata kuliah Sistem Basis Data atau yang lebih dikenal dengan Database dan saat itu ada yang bertanya mengenai SQL Injection ini.

SQL Injection merupakan salah satu masalah vulnerability dalam security dalam implementasi database. SQL sendiri merupakan singkatan dari Structured Query Languange. Artinya pengelolaan database dilakukan dengan mengirimkan perintah-perintah (queries) yang terstruktur dengan bahasa yang tersedia. Nah, SQL Injection yang secara harafiah berarti penyuntikan SQL memiliki artinya menyisipkan perintah atau query ke dalam query yang akan digunakan dalam database SQL.

Penggunaan SQL sebagai salah satu database management system turut mempopulerkan istilah SQL Injection ini dan menjadikan SQL Injection sebagai salah satu masalah keamanan yang cukup berbahaya bila tidak ditangani dengan serius. Apalagi penggunaan database dengan basis SQL seperti MySQL, Microsoft SQL Server, PostgreSQL cukup populer dibanding database lainnya.

SQL Injection umumnya terjadi karena ketidaktelitian programmer dalam membuat script yang akan dijadikan query SQL. Dan tentu saja hal ini bukan merupakan sesuatu yang mudah untuk dihilangkan karena setiap programmer memiliki tingkat ketelitiannya masing-masing saat membuat program.

Mari kita lihat contoh penerapan SQL Injection seperti di bawah. Perlu diketahui bahwa contoh yang saya gunakan adalah dengan bahasa pemrograman PHP dan database MySQL.

Seringkali ketika kita akan mengambil data dari database, kita akan menggunakan query seperti

"SELECT * FROM table_user WHERE username = '".$username."';"

Ketika user memasukkan data ke variable $username dengan nilai etersoul maka kode di atas akan berubah menjadi:

SELECT * FROM table_user WHERE username = 'etersoul';

Hasil di atas tampak tidak bermasalah dan dengan mudah sang programmer akan mendapatkan semua data mengenai seorang user dari table_user yang memiliki username = ‘etersoul’. Masalah akan timbul bila seorang hacker (atau user lain) yang mencoba untuk memasukkan nilai ' OR 1 = 1; -- ke dalam variabel $username. Maka hasil dari penggunaan variabel tersebut adalah:

SELECT * FROM table_user WHERE username = '' OR 1 = 1; --'

Query di atas akan mengambil semua data yang terdapat dalam table_user karena terdapat nilai 1 = 1 yang selalu bernilai true. Sedangkan penggunaan -- berguna agar kode setelah tanda tersebut dianggap sebagai komentar (comment) dan tidak dieksekusi oleh SQL. Seorang hacker bisa saja menggunakan data yang telah didapat di atas untuk keperluan yang buruk misalnya menggunakan account user karena password telah diketahui (walau pada kenyataannya saat ini kebanyakan password telah dienkripsi atau diacak sebelum dimasukkan ke database).

Bila contoh di atas tidak cukup, mari kita coba menggunakan '; DROP TABLE table_user; -- sehingga menjadi:

SELECT * FROM table_user WHERE username = ''; DROP TABLE table_user; --'

Setelah query tersebut dieksekusi, maka hilanglah tabel table_user dari database Anda, kecuali Anda memiliki backup atas table itu.

Lalu bagaimana cara mencegah terjadinya SQL Injection ini? Cara yang dapat dilakukan cukup mudah. Di PHP sendiri disediakan fungsi mysql_real_escape_string() yang dapat digunakan untuk “membersihkan” (sanitize) string dengan melakukan escape atau perubahan terhadap karakter-karakter tertentu, misalnya karakter \ menjadi \\, ” menjadi \” sehingga tidak terjadi salah “asumsi” oleh SQL. Sedangkan untuk melakukan sanitize terhadap integer dapat digunakan fungsi intval(). Untuk float dapat digunakan floatval(). Sekarang mari kita lihat kode hacker di atas setelah di-sanitize dengan mysql_real_escape_string($username);

SELECT * FROM table_user WHERE username = '\' OR 1 = 1; --'

atau

SELECT * FROM table_user WHERE username = '\'; DROP TABLE table_user; --'

Yah, sekarang tanda ‘ telah di-escape menjadi \’ sehingga SQL tidak akan menganggap tanda kutip tersebut sebagai bagian dari perintah SQL untuk menutup tanda kutip sebelumnya, melainkan sebagai sebuah karakter.

Untuk bahasa pemrograman lainnya umumnya telah disediakan juga fungsi untuk melakukan escape terhadap string (umumnya fungsi tersebut menggunakan kata escape). Dalam PHP sendiri dapat digunakan mysql_escape_string(), akan tetapi fungsi ini tidak disarankan untuk digunakan karena tidak melakukan escape terhadap beberapa jenis karakter.

Yah, itulah sedikit penjelasan mengenai SQL Injection. Semoga hal ini dapat membantu Anda dalam membuat program yang baik dan aman. ;)

– Code is poetry –