Minggu, 10 Juni 2012

Keamanan Aplikasi Web Dengan PHP Bag. I


Php

Aplikasi web dengan PHP telah menjadi hal yang populer dalam menyediakan akses global terhadap data, pelayanan, dan produk. Akan tetapi, akses global yang merupakan keuntungan utama penggunaan web ini juga memberikan lubang-lubang keamanan yang bisa diakses secara global dan sering disalahgunakan. Memang bukan hal yang sulit untuk membuat aplikasi web menggunakan skrip PHP, tetapi aplikasi ini bisa jadi mengandung lubang-lubang berbahaya tanpa disadari. Kejadian ini ditampilkan oleh banyak aplikasi web umum lainnya., termasuk PHP yang ternyata memiliki lubang-lubang keamanan berbahaya. Kode program sering dibuat untuk mengidentifikasi lubang ini, tetapi biasanya kode program tersebut mudah diakses oleh publik.

Tulisan ini menampilkan langkah-langkah yang dapat membantu mengidentifikasi atau menghindari lubang-lubang demikian dalam aplikasi yang dituliskan dengan menggunakan PHP.

1. Variabel Auto Global

Pada umumnya aplikasi PHP yang memiliki lubang keamanan berasal dari kemampuan varibel autoglobal. Dengan adanya fasilitas autoglobal pada varibel, programer diberikan kemudahan mengaplikasikan skrip PHP, tapi memudahkan pula terjadinya lubang keamanan. Dengan fasilitas ini suatu varibel misalnya $x tidak perlu dideklarasikan dahulu dan bisa merupakan varibel session, varibel cookie, varibel dari GET/POST. Tentu saja sebenarnya kelemahan keamanan bukan semata-mata berawal dari varibel autoglobal, melainkan juga kurangnya kewaspadaan dari programer itu sendiri. Akibat lubang kemanan tersebut dapat mengakibatkan hal-hal berikut: 

 a). denial of service, b). authentication failure,

c). account hijacking,
d). perusakan tampilan(layout),

e). implantasi virus web browser,dan lain-lain. 

Kebanyakan aplikasi PHP yang ditemukan lubang keamanannya akibat varibel auto global ini adalah aplikasi yang open source, karena user dapat mengetahui kode aplikasi dan mengetahui nama-nama varibel yang digunakan. Jadi dengan sedikit trik 'security through obscurity' sebenarnya skrip agak terlindungi dari akibat fasilitas varibel autoglobal ini. Tapi tentu saja cara itu bukan hal yang baik, karena cepat atau lambat lubang itu akan ditemukan.


Jika pilihan register_globals diaktifkan, maka PHP akan membentuk variabel global untuk setiap variabel GET, POST, dan cookie termasuk dalam meminta (request) HTTP. Ini berarti bahwa attaker kemungkinan mampu mengatur variabel-variabel ini di luar perkiraan. Perhatikan kode berikut yang ditujukan untuk melakukan akses tanpa nama terhadap sebuah artikel tunggal dan meminta autentifikasi untuk semua artikel lain:


// anggaplah bahwa $article_id ditentukan oleh URL 

if ($article_id == 0) { 

$guest_ok = true; 


if (!$guest_ok) { 

// cek apakah pengguna diizinkan dengan menggunakan fungsi yang 

// didefinisikan pada tempat lain 

check_auth(); 

}

Kode ini mungkin terlihat dapat dijalankan karena variabel $guest_ok secara umum akan diinisialisasi false. Akan tetapi, jika user memasukkan guest_ok=1 dalam URL, maka dia akan lolos autentifikasi dan mengakses artikel apapun dalam sistem.

Permasalahan yang sama dapat muncul saat melakukan pengecekan keamanan saat terlihat hubungan (link) ke halaman, tetapi tidak melakukan pengecekan keamanan pada halaman yang terhubung dengan user. Dalam sebuah sistem di mana user mendapat hak akses untuk memilih daftar artikel. Programmer seharusnya melakukan pengecekan keamanan saat mengeluarkan daftar artikel yang tersedia dan saat menampilkan sebuah artikel yang sudah dipilih dari daftar itu. Tanpa melakukan pengecekan ini, attacker dapat mengetik kode URL untuk artikel-artikel yang seharusnya tidak boleh diakses olehnya dan melihat artikel itu tanpa kesulitan. Variasi umum lain untuk permasalahan ini adalah menggunakan fitur “Remember My Login” dengan menyimpan pengenal user dalam sebuah cookie, yang mengizinkan user mengubah nilai cookie-nya untuk login. 

Permasalahan ini dapat muncul di sembarang tempat dalam skrip yang dibuat. Perhatikanlah dengan hati-hati daerah-daerah berikut.


▪ Kode pengecekan autentifikasi dan izin.
▪ Gunakan variabel sebelum diinisialisasi(dapat diatur melalui error_reporting)

▪ Gunakan variabel yang dirancang untuk mengatur permintaan oleh perintah GET atau POST

Langkah-langkah yang dapat dilakukan untuk mengatasi permasalahan ini adalah sebagai berikut.


▪ Menonaktifkan register_globals dalam file php.ini. Sesudah melakukan perubahan ini, Anda akan menggunakan $HTTP_GET_VARS dan $HTTP_POST_VARS yang berhubungan dengan array untuk mengakses input GET dan POST sebagai pengganti penggunaan variabel global. Hal ini mungkin akan membosankan, tetapi jauh lebih aman.
▪ Jika fungsi “Remember My Login” dibutuhkan, masukkan sebuah password atau berusaha keras menebak pengenal acak dalam cookie (fungsi “Remember My Login” masih bisa memberikan lubang keamanan lain seperti pengguna jahat yang membagi sebuah mesin dengan seorang pengguna resmi untuk mendapatkan akses).

▪ Menuliskan kode untuk menginisialisasi variabel global. Kode fragmen di atas dapt dikembangkan dengan menginisialisasi $guest_ok sehingga bernilai false di awal script.
▪ Menjamin suatu variabel bahwa variabel itu benar-benar datang dari suatu bagian dan tidak berasal dari attacker.
▪ Menuliskan kode untuk mengecek bahwa variabel global tidaklah berada dalam array $HTTP_POST atau $HTTP_GET.

Terima Kasih Semoga Bermanfaat...

0 komentar:

Posting Komentar

Tinggalkan Komentar anda.. Terima Kasih

Followers

Free Page Rank Tool free search engine submission

FreeFind Site Search Engine - FreeFind adds a "search this site" feature to your website, making your site easier to use. FreeFind also gives you reports showing what your visitors are searching for, enabling you to improve your site. FreeFind's advanced site search engine and automatic site map technology can be added to your website for free.

http://www.freesearchenginesubmission.infometeo15jours.com

 

Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com