Keamanan Aplikasi Web dengan PHP Bagian 1

Penulis: Tim Editor | Kategori: Keamanan Aplikasi Berbasis Web | Tanggal Terbit: | Dilihat: 3606 kali

Kelemahan keamanan Aplikasi berbasis dengan menggunakan bahasa pemrograman PHP dapat dikarenakan kesalahan pada saat penulisan kode program atau script PHP yang dibuat oleh programer atau pada saat konfigurasinya. Berikut beberapa kesalahan yang sering dilakukan oleh programer web terutama pada programer pemula.

Kode PHP yang Tidak Diparsing

Terkadang kita harus meng-include file PHP untuk memudahkan dalam scripting PHP, misalnya untuk memisahkan script PHP yang berisi fungsi, class, atau konfigurasi dengan script PHP untuk implementasinya. Script PHP yang dipisahkan tersebut kemudian dipanggil dengan fungsi include(), include_once(), require(), atau require_once(). Jika include file merupakan script PHP yang akan dieksekusi, kita dapat memparsing file PHP tersebut agar tidak mudah untuk dibaca oleh attacker. Kita dapat menambahkan script agar ketika file diakses secara langsung oleh attacker maka hanya akan didapatkan baris kosong atau akan langsung di-redirect ke halaman lain. Berikut contoh scriptnya:

if ( $_SERVER['PHP_SELF'] ) {
     header("Location: ../index.html");
}

Letakkan script diatas diawal PHP agar ketika user atau attacker mengakses file secara langsung maka akan langsung di direct ke halaman index.html. pastikan juga bahwa setiap folder terdapat file index.html yang dapat diisi dengan kata can't access file atau file not found. Berikut contoh kode lengkap file index.html









File not found


Kesalahan dalam Menggunakan Fungsi include(), require(), dan fopen()

Kita sering menjumpai bahwa programer mengincludkan sebuah file lain untuk memudahkan dalam scripting kode PHP. Pada dasarnya hal tersebut tidak menjadi persoalan, namun adakalanya programer menggunakan variabel global untuk memparsing file PHP lain tersebut yang menjadikan aplikasi yang dibuat memiliki cela keamanan. Berikut contohnya

include($folder."/class_database.php");

Penggunaan variabel $folder diatas tidaklah aman, karena variabel tersebut jika diketahui oleh attacker dapat dimanfaatkan untuk menyusupkan kode jahat dengan mengubah nilai dari $folder melalui methode $_GET atau $_POST.

Kita dapat mencegah kondisi tersebut dengan tidak meng-include atau sejenisnya dengan menggunakan sebuah variabel. Jika hal tersebut tidak dapat dihindari maka kita dapat memfilter dengan menggunakan regular expression. Berikut contohnya:

$folder = eregi_replace("/^http:\/\/.+/","",$folder);
$folder = eregi_replace("/^(\.\./)/","",$folder);
include($folder."/class_database.php");