Posts Tagged ‘security’

Adakah cara untuk mengubah layout profile di Facebook?

36 Comments
Tags: , , , , , , , , , , , , ,

Bagi yang hanya ingin mendapatkan jawaban dari pertanyaan yang aku tulis di judul, maka jawabannya adalah: tidak ada, atau lebih tepatnya belum ada. Sejauh pengamatan saya, tidak ada cara secara native untuk mengubah atau mengganti layout Facebook (FB) seperti pada Friendster (FS) sampai tulisan ini diturunkan. Akan tetapi terdapat beberapa cara melalui application atau addons yang belakangan juga mendapat “reaksi keras” dari FB yang mempertahankan layout aslinya (baca di bawah untuk selengkapnya).

Lalu mengapa aku menulis tulisan ini? Bukan tanpa alasan tentunya, seperti biasa, selalu ada sebab dan akibat. Sebabnya adalah banyaknya orang yang mencari soal solusi masalah pengubahan layout pada FB agar (kemungkinan besar) menjadi seperti FS, yang notaben-nya merupakan salah satu situs pertemanan atau social networking yang paling populer di Indonesia hingga saat ini walaupun berangsur-angsur mulai turun penggunaannya dan sudah mulai berhasil disusul oleh Facebook.

(more…)

Ramai-ramai dibobol

2 Comments
Tags: , , , , , , ,

Setiap hari aku membaca berita detikinet.com, hampir tiap hari pula selama 1 minggu terakhir ini terpampang berita bahwa beberapa situs di-crack dengan cara defacing alias mengubah “wajah” dari web tersebut dan juga beberapa situs disisipi gambar dan pesan yang anti-pemerintah. Dan yang cukup mencengangkan, situs yang berhasil dibobol adalah situs-situs milik pemerintah!

Padahal kita sudah tahu bahwa situs-situs seperti ini biasanya “dibiayai” mahal oleh pihak pemerintah walaupun kebanyakan informasi akhirnya tidak sampai ke masyarakat karena jarang yang mengaksesnya. Entah mungkin modal yang dipakai untuk membuat website itu menguap entah ke mana dan akhirnya developer cuma dibayar “setengah harga” dan website pun dirancang “setengah jadi”, atau mungkin juga web tidak pernah ditest atau diaudit security-nya sebelum sampai tahap rilis.

Fenomena ini tampaknya berhubungan dengan semakin dekatnya Pemilu 2009 nanti dan untuk memperingati pemerintah yang membuat keadaan negara ini terpuruk (paling tidak dari sisi teknologi juga sudah cukup terpuruk dengan banyaknya web yang dibobol).

Dan aku baru saja berkunjung ke salah satu halaman yang diberitakan dicrack itu, dan tampaknya “pesan moral” dari para cracker masih terpampang jelas di sana dan belum diurus oleh pihak admin web. sudah dibersihkan oleh pihak admin. Ah, ini siapa yang ga bener yah? Admin-nya atau developernya sih? @_@

Input sanitizing on PHP

1 Comment
Tags: , , , , , , , , , ,

Banyak yang berkata “jangan pernah percaya kepada input dari pengguna” atau “don’t ever trust user input”, khususnya dalam dunia web programming dan developing. Kalimat itu tentu bukan sekedar kalimat biasa yang tidak ada artinya atau sekedar menjadi kata-kata mutiara tanpa penerapan. Dunia internet merupakan dunia yang sangat terbuka di mana setiap orang, mulai dari yang baik sampai yang memiliki rencana jahat bisa mengakses dunia yang kita buat di internet.

Walaupun ada banyak penyebab security di PHP dibobol oleh orang lain, akan tetapi penyebab yang paling utama dan sering terjadi adalah melalui user input. Padahal di sisi lain, user input dapat digolongkan sebagai tonggak suatu website dinamis. User input ini sendiri dapat berupa paramater dalam URL, form kiriman dari user, maupun alamat dari URL.

Jadi bagaimana kita harus menghadapi bahaya yang mungkin terjadi karena masalah user input? Jawabannya adalah dengan validasi dan pembersihan / sanitize terhadap input yang dikirimkan oleh user. Berikut ini hal-hal yang penting dalam melakukan validasi dan sanitizing terhadap user input.

(more…)

About XSS and CSRF

11 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…)

SQL Injection

8 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 –

Free Hosting vs. Paid Hosting

6 Comments
Tags: , , , ,

Sewaktu kita ingin membangun sebuah situs web kemudian mempublikasikanya, maka akan timbul pertanyaan bahwa “akan dihost di manakah situs saya ini?”. Bagi yang belum mengetahui mengenai host, saya akan menjelaskan sedikit dengan bahasa yang sederhana.

Ketika Anda ingin membangun suatu situs web, file-file untuk situs web tersebut harus diletakkan di sistem komputer yang terhubung dengan jaringan internet (komputer server). Komputer tempat data Anda disimpan inilah yang disebut host. Sedangkan agar orang-orang dapat lebih mudah mencapai situs Anda, maka diperlukan domain atau nama web, misalnya www.situs-saya.com atau sejenisnya. Biaya domain umumnya Rp. 30.000 sampai Rp. 300.000 per tahun tergantung nama domain yang Anda gunakan (umumnya .com, .co.id dan .net lebih mahal daripada .org).

Kembali ke masalah hosting di atas. Ada 3 jawaban yang umum untuk pertanyaan di atas, yaitu hosting gratis (free hosting) atau hosting berbayar (paid hosting) atau Anda juga dapat menempatkan website Anda dalam host yang Anda miliki sendiri, yang tentu saja akan lebih mahal bila Anda hanya ingin membangun suatu website kecil-kecil atau web pribadi.

Penggunaan server sendiri memerlukan sebuah server lengkap dengan infrastruktur agar web bisa berjalan dengan baik dan tidak sering down, yang umumnya timbul karena masalah koneksi internet yang tak stabil dan suplai listrik sampai ke masalah kemungkinan kerusakan hardware. Dengan asumsi bahwa digunakan server dengan hardware standar, maka biaya untuk server adalah sekitar 5 atau 6 juta rupiah. Belum lagi ditambah dengan biaya tahunan atau bulanan untuk listrik dan internet 24 jam non-stop yang mungkin bisa menghabiskan 500 ribu rupiah per bulan.

Infrastruktur yang baik bisa didapatkan di beberapa data center yang cukup besar sebagai tempat server collocation. Server collocation ini sendiri bisa disebut sebagai tempat penitipan server. Di tempat ini umumnya telah disediakan infrastruktur seperti jaringan internet yang cepat (sampai dengan kecepatan Mbps), jaringan listrik yang stabil dan cadangan listrik dengan UPS dan generator, kondisi tempat yang lebih baik (suhu, kebersihan ruangan, keamanan). Akan tetapi kelebihan untuk sebuah collocation server harus ditebus dengan harga yang cukup mahal, bahkan sampai jutaan rupiah per bulan per server. Karena mahalnya biaya yang akan dikeluarkan, maka alternatif ini umumnya hanya digunakan bila mau melakukan host untuk web-web yang besar. Oleh sebab itu mari kita sisihkan alternatif ini.

Alternatif kedua adalah hosting berbayar (paid hosting). Paid hosting artinya Anda menitipkan data Anda untuk dihost oleh perusahaan hosting dengan fasilitas yang sudah disediakan oleh pihak perusahaan, misalnya jaringan internet dan listrik serta komputer servernya. Anda tidak perlu terlalu dipusingkan dengan masalah teknis seperti hardware, karena semua itu sudah menjadi tanggung jawab perusahaan web hosting. Sekarang ini jumlah paid hosting di Indonesia sudah cukup banyak dan harganya pun relatif murah. Pilih jenis pake shared hosting di mana dalam satu komputer server, terdapat banyak situs web yang dihost. Hal ini tentu akan lebih murah bila Anda menyewa satu server untuk diri Anda sendiri.

Umumnya biaya untuk shared paid hosting tergantung dari besar space atau ruang penitipan yang akan digunakan serta banyaknya bandwidth untuk transfer data yang disediakan. Space sebesar 10 Megabytes sampai 50 Megabytes sudah cukup untuk sebuah web pribadi. Bandwidth sebesar 1000 MB/bulan sampai 3000 MB/bulan juga sudah cukup untuk website yang baru digarap. Selain dengan bandwidth dan space, tarif host juga ditentukan dengan fitur yang ada, misalnya jumlah database, jumlah email dan banyak hal lainnya.

Jumlah biaya yang masuk akal untuk membuka sebuah web pribadi yang sederhana adalah Rp. 50.000 / tahun sampai Rp. 300.000 / tahun.

Kelebihan dari paid hosting adalah Anda akan lebih mudah mengatur isi situs web Anda serta mengkonfigurasi situs Anda, walaupun keleluasaan ini masih dibatasi oleh aturan perusahaan web hosting. Umumnya aturan ini berhubungan dengan banyaknya situs web yang dihost dalam satu server, di mana ketika Anda berbagi ruangan yang lainnya, maka banyak hal yang harus dibatasi satu sama lainnya agar tak terjadi konflik.

Perlu diketahui bahwa tidak semua shared hosting aman untuk digunakan. Shared hosting menggunakan beberapa aturan atau konfigurasi server yang berlaku bagi setiap user yang ada, sehingga bila sebagian user yang melakukan host di tempat tersebut puas, belum tentu sebagian lainnya juga menikmati aturan atau konfigurasi server tersebut. Kekurangan hosting yang dishare juga terjadi dalam hal security di mana bisa terkadang bila terdapat satu situs dalam server tersebut terkena crack (hack), maka situs lain yang di host dalam server yang sama juga akan lebih mudah terkena serangan. Sama prinsipnya ketika seorang penjahat berhasil membobol pintu depan rumah dan masuk ke dalam rumah, maka ia memiliki akses ke pintu-pintu kamar dalam rumah tersebut walau tentu ada pula pintu yang masih terkunci dan ada juga pintu yang terbuka lebar sehingga mempermudah sang penjahat untuk menjalankan aksinya.

Untuk ke depannya, mungkin saya akan menuliskan mengenai security dalam web dan hosting.

Solusi terakhir adalah free hosting. Free hosting tidak mengharuskan Anda membayar apapun dengan beberapa imbal balik sesuai dengan yang diminta oleh perusahaan host. Contohnya saja Tripod atau Geocities yang akan secara otomatis menampilkan iklan dalam situs Anda. Selain itu, domain yang Anda gunakan juga tidak bebas sehingga harus menggunakan nama domain perusahaan tersebut. Beberapa situs hosting khusus seperti hosting untuk blog (contohnya Wordpress dan Blogspot), situs ini membatasi dalam jenis file yang dapat diupload karena memang dikhususkan sebagia blog yang sebenarnya tidak terlalu perlu menggunakan banyak jenis script.

Beberapa waktu yang lalu, saya sempat menemukan sebuah hosting gratis dengan fitur yang hampir selengkap hosting berbayar. Setelah ditelusuri, ternyata situs ini juga meminta imbal balik dan aturan yang ketat seperti harus bergabung secara aktif dalam suatu komunitas sampai situs akan dinonaktifkan tanpa pemberitahuan bila tidak ada traffic atau perubahan web dalam waktu 3 bulan.

Pemilihan jenis hosting yang akan digunakan tergantung dari kebutuhan Anda. Bila Anda termasuk orang yang ingin serius dalam dunia web, walau blogging sekalipun, Anda dapat mencoba menggunakan paid hosting karena Anda dapat membuat tampilan situs Anda benar-benar berbeda dari yang situs yang lain dan juga bisa lebih dinamis karena memperbolehkan script semacam PHP atau Perl.

Bagi Anda yang berminat mencari hosting berbayar, Anda bisa mencoba mencari di Google dengan keyword “indonesia hosting”. Bagi yang ingin mencari situs hosting gratis, silahkan gunakan keyword “free web hosting”.

Selamat berhosting dan membangun web. ;)