jump to navigation

Tips sederhana pengamanan aplikasi PHP March 2, 2006

Posted by Bedjo in All About Computer.
trackback

Pertama kali saya ingin berterima kasih kepada seluruh pengembang program-program open source dan terlebih lagi untuk para pengembang PHP. Pada kesempatan kali ini saya ingin berbagi pengalaman saya tentang pemrograman web dengan PHP. Saya juga minta maaf bagi semua saja yang merasa pernah membahas tentang materi yang saya sampaikan ini, karena saya tidak menyebutkan nama anda. Terus terang (bukan untuk sombong) materi ini saya dapatkan dari pengalaman sekitar 1/2 tahun megang PHP, dan materi yang saya dapatkan banyak dari pengalaman bongkar program orang dan baca manual dari php.org.Tips sederhana pengamanan aplikasi PHP menurut saya bukan judul yang berlebihan. Kayaknya dah cukup basa-basinya lebih baik langsung masuk ke materi. Untuk sedikit melakukan pengamanan aplikasi PHP, bisa dilakukan dengan langkah berikut :
1
Pastikan register global pada kondisi off, bisa disetting pada php.ini -> register_globals = Off.. Bagi beberapa programer yang sudah lama berkecimpung di PHP mungkin akan sedikit kaku dengan setting ini, karena mereka biasa menggunakan $nama_argumen, untuk mengambil nilai dari argumen yang dilewatkan melalui url atau yang didapat dari form. Tapi kalau dengan setting ini pengambilan nilai dari argumen dapat dilakukan dengan $HTTP_GET_VARS[] atau $HTTP_POST_VARS. Dengan setting ini saya katakan omong kosong kalau form dengan method “get” tidak aman.
2
Buatlah file index.html dalam setiap direktori dalam aplikasi yang dibangun, walau file tersebut tidak dipakai, atau dengan kata lain tidak terdapat string apapun., ini untuk mengatasi konfigurasi standart dari kebanyakan web server yang akan menampilkan seluruh file dan direktori pada direktori yang diminta, jika dalam direktori yang diminta tidak terdapat file default yang otomatis akan dipanggil.
3
Tangani semua argumen yang kita dapatkan baik dari url atau dari form, dan bila ditemukan nilai argumen tidak sesuai dengan perjanjian pembangunan aplikasi maka tangani keadaan tersebut, baik di alihkan ke halaman error, atau ada banyak cara lain. Sebagai contoh ada 2 nilai yang diijinkan yaitu list,dan tampil, maka anda bisa menanganinya dengan—————————-code————————————if($HTTP_GET_VARS
[“argumen”]==”list”)penanganan1();elseif($HTTP_GET_VARS[“argumen”]==”tampil”)
penangan2();elseheader(“Location:./error.php”);—————————–code———————
4
Bila aplikasi yang dibuat memiliki banyak pengguna dan ada tingkatan otoritas pengguna, buatlah tabel pada database untuk menyimpan data otoritas. Sebagai contoh seperti berikut (dengan MySQL )————————MySQL query———————————CREATE TABLE `kewenangan` (`idkewenagan` tinyint(4) NOT NULL default ‘0’,`kewenagan` varchar(255) NOT NULL default ”,PRIMARY KEY (`idkewenagan`)) TYPE=MyISAM;CREATE TABLE `pengguna` (`username` varchar(255) NOT NULL default ”,`password` varchar(32) binary NOT NULL default ”,`idkewenagan` tinyint(4) NOT NULL default ‘0’,PRIMARY KEY (`username`)) TYPE=MyISAM;————————MySQL query——————————-dan buatlah fungsi untuk mengecek otoritas setiap pengguna yang masuk ke sistem (untuk lebih lengkap bisa dibaca pada artikelku sebelumnya yang berjudul).————————-fungsi cek otoritas—————————function cekotoritas($username,$otoritas,$mysqllink) {$sqlcek=”select username from pengguna,kewenagan wherepengguna.idkewenangan=kewenagan.idkewenangan andkewenangan.idkewenangan=’$otoritas’ and pengguna.username=’username'”;$kerjakancek=mysql_query($sqlcek,$mysqllink);
$datacek=mysql_fetch_row($$kerjakancek);if($datacek[0]!=NULL)return 1;return 0;}————————-fungsi cek otoritas————————— dan gunakan fungsi ini pada awal setiap halaman, untuk cek otoritas pengguna, apakah berhak mengakses halaman tersebut atau tidak. Sangat disarankan untuk menggunakan fungsi ini pada halaman pemasukan data ke database, jadi sebelum data dimasukan dicek dulu apakah user bersangkutan berhak atau tidak. Cara ini untuk menghindari pemasukan data langsung melalui url, jika si includer tahu path dari halaman pemasukan data.
5
Sangat disarankan untuk membuat privilege yang berbeda pada database untuk setiap pengguna yang diijinkan mengakses aplikasi tersebut. Mungkin cara ini akan saya bahas tersendiri pada artikel ku berikutnya. karena cara ini cukup banyak kalau di bahas.

Comments»

No comments yet — be the first.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: