Mengoptimalkan Sistem Keamanan pada Web
Keamanan, itu tuh yang paling penting serta paling rentan pada semua hal. Saya bikin router. Enak-enaknya di remote orang dari jauh. Saya bikin Web. Besok-besok udah ilang dihapus orang iseng. Itu karena sistem keamanan yang sangat rentan. Sedangkan untuk Web, yang bersifat global. Banyak sekali orang-orang yang hanya mencari kesenangan dengan merusak web/atau situs-situs orang lain dengan berbagai jenis serangan. Itu sangat mengganggu sekali. Balik lagi pada hukum Cyber. Kita kudu menegakkan hukum ini sebagai pengguna Cyber yang baik.
Nah. Di sini, saya akan menulis mengenai cara mengoptimalkan sistem keamanan pada sebuah web. Khususnya dari berbagai serangan yang mungkin bisa merusak sistem web kita. Yok.. langsung aja deh.. (mumpung lagi mood)
Berikut adalah beberapa tipe serangan dan jenis penangkalannya :
1. Folder Admin
Banyak serangan yang dilakukan pada folder ini. Karna folder ini menyimpan semua konfigurasi pada web kita. untuk menangkalnya. Di sini saya hanya menggunakan cara lama.. Yaitu
MeRENAME nama folder untuk Admin dengan Unik agar tidak mudah ditebak oleh para CRACKER..
Misalnya : - admiiin
- administratoooorrr
- adminfolder
- atau yang lebih parah 4dm1n_f01d3r (alay banget wkwkw)
Hehe.. ya seperti itulah nama-nama folder yang aman menurut saya. Khusus untuk yang menggunakan CMS Joomla atau WordPress nama folder admin jika ingin menggantinya harus mengganti juga pada file-file yang berhubungan dengan folder tersebut. Hehe..
2. Menghalau SPAM dengan Capcai ( Captcha )
Definisi intinya ialah. SPAM merupakan pesan yang dikirim oleh komputer/mesin secara terus-menerus dan berulang-ulang. Nah. tentu kita tidak ingin kan web kita di kirimi SPAM-SPAM seperti itu. Karna bisa membanjiri memori dan akan membuat lemot website kita saat dibuka. Nah untuk itu di sini. Kita menggunakan Captcha sebagai verifikasi. Captcha ialah gambar berisikan kombinasi angka dan huruf yang digunakan untuk verifikasi sebuah data. Mesin/komputer SPAMER bisa membaca data yang berupa kata, tetapi tidak bisa membaca kata-kata yang teradapat di dalam Gambar. Itulah fungsi Captcha sesungguhnya.
Untuk membuat Captcha berikut adalah script PHPnya.. (tenang yah, simple kok)
captcha.php
session_start ();
//menentukan extensi gambar yang digunakan
header("Content-type: image/png");
//memanggil file gambar untuk background kode Captcha
$captcha_image =
imagecreatefrompng("images/latar_captcha.png");
//memanggil jenis font
$captcha_font = imageloadfont("images/font_captcha.gdf");
//membuat 6 digid kode dari md5
$captcha_text = substr(md5(uniqid('')),-6,6);
//menyimpan kode di session
$_SESSION['captcha_session'] = $captcha_text;
//warna text
$captcha_color = imagecolorallocate($captcha_image,0,0,0);
//mengacak kode
imagestring($captcha_image,$captcha_font,15,5,$captcha_text,
$captcha_color);
//menampilkan kode
imagepng($captcha_image);
//jika selesai, hapus gambar
imagedestroy($captcha_image);
?>
Kemudian untuk menggunakannya hanya tinggal memasukkan pada form-form yang berupa text area. pada code form tersebut tinggal masukkan <img src=captcha.php>
lalu pada file PROSESnya. tinggal di tambahakan kode if($_POST['kode']==$_SESSION['captcha_session'] Udah. gitu aja. hehe..
3. Melumpuhkan XSS Attack
Cross Side Scripting. penyerangan dengan memasukkan tag/script HTML ke dalam sebuah textarea. Nah.. kta meluhmpuhkannya dengan menggunakan fungsi anti injection. Dimana apabila terdapat tag/script yang dimasukkan itu akan diproses dan dianggap sebagai teks biasa.. gak panas gak dingin (apasih)
Untung menanggkalnya perlu kita sisipkan kode berikut:
function anti_injection($d) {
$f=stripslashes(strip_tags(htmlspecialchars($d,ENT_QUOTES)));
return $f;
}
//misalnya pada buku tamu
$nama = anti_injection($_POST[nama]);
$email = anti_injection($_POST[email]);
$pesan = anti_injection($_POST[pesan]);
Udah deh.. gitu aja. hehe.. silahkan dicoba.. dan hasilnya akan tampil seperti apa yang agan tulis.
4. Bertahan dari SQL Injection
Nah..ini nih.. yang lagi saya pelajarin.. (waduh parah) hehe.. maksudnya pelajarin untuk menangkalnya. SQL Injection digunakan untuk memanipulasi perintah SQL untuk dijalankan ke database tanpa sepengetahuan ADMIN. Biasanya sering memungkinkan seseorang masuk (login) ke dalam sistem admin tanpa harus memiliki account. Sehingga mudah untuk masuk tanpa harus tau username atau password. Bahaya boo... begini saya luruskan.
perhatikan Script di bawah ini
SELECT * FROM user WHERE username='username' AND password='password';
Coba kamu Login pada form login yang kamu buat dan isikan sebagai berikut :
username : ' OR 1=1;//
password: terserah kamu
dan perintah yang akan dieksekusi sistem adalah
SELECT * FROM user WHERE username='' OP 1=1;//' AND password='terserah';
tanda titik koma(;) menandakan akhir perintah dan // sebagai komentaar alias tidak akan dieksekusi program. Jadi perintah yang dieksekusi sebenarnya adalah
SELECT * FROM user WHERE username='' OR 1=1;
Artinya username kosong lalu di OR dengan kondiri TRUE (1=1). Jadi kondisi apapun jika OR dalam keadaan TRUE, maka hasilnya selalu TRUE juga. Artinya Username dan Password di anggap benar. Malah bisa aja di masukkan perintah Delete jadi ADMIN sekalipun tidak bisa Login.. Haha.. Jahatnya
Nah menanggulanginya dengan fungsi mysql_real_escape_string yang mengabaikan tanda-tanda pada pengisian form. cara menerapkannya masukkan script berikut pada file proses login anda
4. Bertahan dari SQL Injection
Nah..ini nih.. yang lagi saya pelajarin.. (waduh parah) hehe.. maksudnya pelajarin untuk menangkalnya. SQL Injection digunakan untuk memanipulasi perintah SQL untuk dijalankan ke database tanpa sepengetahuan ADMIN. Biasanya sering memungkinkan seseorang masuk (login) ke dalam sistem admin tanpa harus memiliki account. Sehingga mudah untuk masuk tanpa harus tau username atau password. Bahaya boo... begini saya luruskan.
perhatikan Script di bawah ini
SELECT * FROM user WHERE username='username' AND password='password';
Coba kamu Login pada form login yang kamu buat dan isikan sebagai berikut :
username : ' OR 1=1;//
password: terserah kamu
dan perintah yang akan dieksekusi sistem adalah
SELECT * FROM user WHERE username='' OP 1=1;//' AND password='terserah';
tanda titik koma(;) menandakan akhir perintah dan // sebagai komentaar alias tidak akan dieksekusi program. Jadi perintah yang dieksekusi sebenarnya adalah
SELECT * FROM user WHERE username='' OR 1=1;
Artinya username kosong lalu di OR dengan kondiri TRUE (1=1). Jadi kondisi apapun jika OR dalam keadaan TRUE, maka hasilnya selalu TRUE juga. Artinya Username dan Password di anggap benar. Malah bisa aja di masukkan perintah Delete jadi ADMIN sekalipun tidak bisa Login.. Haha.. Jahatnya
Nah menanggulanginya dengan fungsi mysql_real_escape_string yang mengabaikan tanda-tanda pada pengisian form. cara menerapkannya masukkan script berikut pada file proses login anda
function anti_sql_injection($data) {
$filter = mysql_real_escape_string($data) ;
return $filter;
}
$username = anti_sql_injection($_POST[username]);
$pass = anti_sql_injection($_POST[password]);
//memastikan username dan password berupa huruf atau angka
if (!ctype_alnum($username) OR !ctype_alnum($pass)){
echo "Hayoo.. sekarang loginnya tidak bisa di injeksi lho.";
}
else {
echo "Login berhasil.";
}
Nah gitu tuh. buat menanggkal SQL Injection..
Sekian dulu yah.. cape juga ngetik. Kalau ada tambahan. Nanti akan saya posting updetannya. Hehe..
mantap mas infonya sip banget
ReplyDelete