Selasa, 10 Desember 2013

PHP Security

PHP Security
PHP merupakan bahasa pemrograman yang paling banyak digunakan untuk develop aplikasi web, karena kemudahannya, simple, dan support multi platform. Oleh karena itu banyak sekali serangan-serangan ke web dengan bahasa pemrograman PHP dibanding dengan bahasa pemrograman yang lain. Berikut beberapa kemungkinan serangan yang dilakukan ke Web PHP:
 SQL Injection, adalah salah satu cara yang paling sering digunakan oleh hacker untuk menyerang web dengan memanfaatkan kelemahan coding di scirpt PHP. Cara ini dilakukan dengan menyerang url dan form yang akan melakukan eksekusi script sql tanpa melindungi variabel yang dikirim.
 Posting Spam, adalah dengan mengirim data ke form dalam jumlah yang sangat banyak, sehingga membuat isi tabel di database menjadi sangat besar. Cara ini dapat dilakukan dengan menggunakan script yang langsung mengeksekusi insert ke form.
 PHP Shell, adalah menanam script PHP di server yang dapat di eksekusi sewaktu-waktu untuk merusak content, DB dan script web itu sendiri, Cara ini dapat dilakukan dengan memanfaatkan form upload yang belum tervalidasi atau dapat juga memanfaatkan hak akses direktori.
 HTML Injection, adalah memposting script2 html, css dan javascript melalui form yang belum tervalidasi untuk merusak tampilan/content web.
Masih banyak jenis serangan-serangan ke web PHP selain ke-4 cara diatas, yang mungkin tidak kita persiapan untuk mencegahnya. Berikut beberapa cara untuk menghindari beberapa serangan tersebut, paling tidak untuk meminimalkan serangan ke web kita:
1. Error reporting, adalah cara untuk tidak menampilkan pesan saat web kita error, karena sangat berbahaya jika sampai nama tabel-tabel kita bisa terbaca, akan memungkinkan untuk melakukan sql injection atau serangan yang lain. Caranya adalah dengan setting di php.ini yaitu : display_errors = Off saat web sudah online, meskipun saat development di localhost bisa kita set display_errors = On untuk mempermudah develop web tsb.
2. Validasi variabel yang akan dieksekusi sql, digunakan untuk menghindari sql injection yaitu dengan cara menggunakan fungsi mysql_real_escape_string()
$studentName = mysql_real_escape_string($_POST['student_name'], $db);
$queryResult = mysql_query("INSERT INTO Students (name) VALUE ('{$studentName}')");
3. Direktori akses, untuk direktori tujuan upload gunakan hak akses 755 jangan sampai membuka akses menjadi 777 karena sangat mudah sekali akses public untuk menaruh file PHP shell.
4. Tambahkan file .htaccess untuk men disable direktori upload untuk eksekusi file .php
<FilesMatch "\.(php|htm|css|js)$">
Deny from all
</FilesMatch>
5. Validasi upload form, jika aplikasi anda memperbolehkan upload file ke server, lakukan validasi jenis tipe file apa saja yg boleh diupload, tutup koneksi upload untuk file type php, html, css atau js. Untuk mengambil type file gunakan perintah $_FILES['type'] di php.
6. Gunakan captcha untuk script login admin atau form comment yang bersifah public.
Beberapa cara diatas paling tidak dapat meminimalkan serangan-serangan ke web, meskipun masih banyak cara lain yang dapat digunakan untuk mencegahnya.. Jika ada tambahan cara-cara yang lain silahkan ditambahkan di comment.

Tidak ada komentar:

Posting Komentar