ANTIINJECTION NOVA ROCHAYATI MANAJEMEN INFORMATIKA

dokumen-dokumen yang mirip
LAMPIRAN A : TAMPILAN PROGRAM

Menangani Input dari User

Membuat Database mysql dengan PhpMyAdmin

Pemrograman Web Lanjut 2017

MODUL 11 MEMBUAT LOGIN USER

BAB III IMPLEMENTASI. Program penghubung database tersebut disimpan dengan nama. konek.php. Berikut merupakan kode program penghubung Database :

Script PHP dan MySQL J A M K E E M P A T

Materi

Pemrograman Web Lanjut 2017

E-trik Ajax. Database MySQL. Dedi Alnas

BAB IV IMPLEMENTASI DAN PEMBAHASAN

MATERI WEB. Pembuatan Login Aplikasi, Dasboard Admin & Menu Keluar menggunakan PHP & Mysql. Bas-Dev : Ahmad Bastiar

echo zine, issue // Pengamanan URL dengan MAC

BAB XIII BEKERJA DENGAN SESSION

BAB IV HASIL DAN PEMBAHASAN

P - 12 Bab 9 : PHP & MySQL

Lampiran 1. Flowchart perancangan sistem

MODUL 5 KONEKTIVITAS PHP DENGAN MySQL

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

MODUL 10 KONEKTIVITAS PHP DENGAN MySQL

PERANCANGAN WEB SEBAGAI MEDIA PROMOSI PADA USAHA MAMA E (MARTABAK MANIS ENAK) Naskah Publikasi. diajukan oleh Zarwin

BAB IV HASIL DAN IMPLEMENTASI

108

Bab 13 Tentang SESSION

Langkah Cara Membuat Form Login Menggunakan PHP dan MySQL Langkah 1: Membuat Tabel MySQL User/Pengguna

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

BAB IV IMPLEMENTASI SISTEM

b) Membuat database tiket. Siapkan databasenya dengan membuat database tiket Sampai langkah ini database tiket sudah siap digunakan

Mahasiswa memahami Pengertian Basisdata, Cara membuat basisdata, cara menginput data dan cara menampilkan data.

1. Membuat Kerangka Website dengan Table

Membuat Login Dengan PHP dan MYSQL

Riska Kurnianto Abdullah NRP :

Praktikum 3 Cookie, Session, dan Database MySQL

BAB IV HASIL DAN PEMBAHASAN. Sistem Informasi Penjualan dan Pembelian Barang Pada Toko Touring

Membuat Sistem Pertemanan Sederhana

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

BAB IV IMPLEMENTASI DAN PEMBAHASAN SISTEM. Program dalam judul Sistem Informasi Geografis Obyek

TIB18 - PEMROGRAMAN WEB. Pemrograman Web Pertemuan & 21-22

Advantages. Keunggulan :

MODUL 8 Insert, Update, & delete

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

Dengan asumsi bahwa aplikasi masih menggunakan cookie, maka query untuk membuka profil adalah seperti berikut:

BAB IV IMPLEMENTASI DAN PEMBAHASAN SISTEM. telah dibuat. Tujuannya untuk melakukan uji coba pada aplikasi dan sebagai

BAB 7 APLIKASI KOMENTAR DAN VALIDASINYA

PROTECTING WEBSITES FROM COMMON ATTACKS

Pertama-tama kita buat form login terlebih dahulu. login.htm

LAMPIRAN LISTING PROGRAM WEBSITE

Halaman Utama. Tampilan Menu. Universitas Sumatera Utara

SEARCHING, EDIT / UPDATE DAN DELETE. PHP & MYSQL Part Two

Modul Pembuatan Aplikasi Login dengan PHP dan MySQL

Dasar PHP-MySQL oleh : Prasaja Wikanta

BAB V IMPLEMENTASI DAN PENGUJIAN. lingkungan perangkat lunak, implementasi database beserta struktur program dan

MEMBUAT MASTER BERITA Teknik Informatika Sopingi, M.Kom

BAB X AKSES DAN MANIPULASI DATA

Membuat Toko Buku dengan PHP - MySQL

BAB IV IMPLEMENTASI DAN PENGUJIAN

Tutorial PHP Metode Searching - Multiple Keyword

Session. Pendahuluan

Levenshtein Distance.php

Artikel ini akan memberikan informasi bagi pembaca yang kesulitan dengan Teknik Mencegah SQL Injection pada PHP.

LAMPIRAN. 1. Listing Program pada website sekolah. index.php

7 Langkah Membuat Modul CMS Lokomedia

Domain & Hosting Free By : Subianto, S.Kom

Tutorial jquery Ajax Bagian 2 (Input, Update, Delete, Animasi Loading)

Bab IV. HASIL DAN ANALISIS Hasil Karya / Implementasi Tampilan Website Berita Indonesia Hari Ini. untuk admin. a.

Fungsi-fungsi MySql Fungsi mysql_connect. Bentuk: Membuat hubungan ke database MySQL yang terdapat pada suatu host.

Pemrograman Web. Koneksi dan Manipulasi Basis Data. Adam Hendra Brata

Membuat Halaman Login Dengan PHP

Integrasi PHP dan MySQL Donny Reza, S.Kom

LAMPIRAN. Source code halaman utama:

BAB 4 PERANCANGAN LAYAR

MODUL 6 SESSION DAN USER AUTHENTICATION

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

Checkbox dengan Foreach dan MYSQL

MySQL Databases. Dasar-dasar MySQL dan Implementasi MySQL kedalam pemrograman PHP. Jakarta, 16 April 2011 Oleh: M. Awaludin, S.Kom

BAB III ANALISA DAN DESAIN SISTEM

Pertemuan Ke-13 (PHP & MYSQL) Adi Widodo,S.Kom.,MMSI 1

DATABASE MYSQL DENGAN PHP

Mengakses database MySQL melalui PHP

PRAKTIKUM I MySQL / phpmyadmin

DESKRIPSI PERANCANGAN PERANGKAT LUNAK SISTEM PENTIKETAN ELEKTRONIK KONSER (SPEK) Dipersiapkan oleh: Kelompok 3

Pemrograman PHP & MySQL

Konsep Basis Data di Web

PHP & MYSQL. Ingat, PC anda tidak memerlukan tambahan khusus atau apapun untuk melihat hasil eksekusi kode PHP anda. Mengapa?

Mengelola Bagian Utama Website Sekolah

Membuat CRUD Sederhana Menggunakan PHP Dengan Mysqli Extension

window.location='karyawan/homeuser.php'</script>"; }else if($c['level']=="manajer"){

Analisis Penanganan SQL Injection pada Basis Data MySQL dengan Framework Code Igniter dan PHP

Pemrograman Web PRAKTIKUM 6. Query Data 2. TUJUAN BELAJAR Mahasiswa dapat menggunakan PHP dan MySQL untuk mengupdate data

TUGAS KELOMPOK SECURITY COMPUTER TOOL HACKING SQL INJECTION

MODUL PEMROGRAMAN WEB

Membuat Buku Tamu Berbasis Web secara Gampang & Simple FIRST Menggunakan PHP dan MySQL EDITION

BAB III ANALISIS DAN DESAIN SISTEM

INTRO PHP FORM PHPMYADMIN input update delete TEMPLATE SEDERHANA

TUTORIAL CODEIGNITER Langkah Tepat menjadi Web Developer Handal, menguasai CodeIgniter, jalan membuat aplikasi berbasis website lebih mudah

LAMPIRAN. Lampiran 1 Wawancara dengan Bapak Thoriq Rachmat selaku Manager IT di PT. 1. Apakah perusahaan saat ini membutuhkan sistem server yang baru?

Form Mampu membuat form dan dan mengirim data ke halaman lain Pengaturan Validasi dan keamanan form. Sesi 5

BAB IV IMPLEMENTASI DAN PENGUJIAN

Transkripsi:

ROCHAYATI 3093311030 ANTIINJECTION Menurut Wikipedia Xss injection adalah salah satu jenis serangan injeksi code (code injection attack) Html. Jadi inti dari XSS Injection adalah serangan menggunakan HTML code. Source. Dari source diatas kita melihat 2 Fungsi, yakni fungsi htmlspecialchars dan trim, lalu apa kegunaanya? Htmlspecialchars : berfungsi untuk mengabaikan tag html, misal spasi dirubah menjadi %20, sehingga ketika ada attacker menyisipkan kode html, maka tidak akan terbaca sebagai Tag HTML, tetapi teks biasa. Trim : trim disini berfungsi untuk menghapus karakter spasi di depan teks. function antixss($data) { $xss = htmlspecialchars(trim($data)); return $xss; <?php mysql_connect("localhost","root","") or die ("gagal Koneksi"); mysql_select_db("db_guestbook") or die ("gagal koneksi database"); function antixss($data)

{ $xss = htmlspecialchars(trim($data)); return $xss; $nama = antixss($_post['nama']); $email = antixss($_post['email']); $web = antixss($_post['web'];); $pesan = antixss($_post['pesan']); $tgl = date('y-m-d'); $query = mysql_query("insert into buku_tamu values('','$nama','$email','$web','$pesan','$tgl')"); if(!$query) { echo "Gagal simpan buku tamu, silahkan <a href=\"buku_tamu.php\">ulangi</a>."; else { echo "Terima kasih $nama telah mengisi buku tamu.";?> http://burhanudin.web.id/programing/ SIMPAN KOMENTAR <?php <?php session_start(); include "config/connection.php"; include "config/library.php"; $nama=trim($_post['nama_komentar']); $komentar=trim($_post['isi_komentar']); if (empty($nama)){ echo "Anda belum mengisikan NAMA<br /> <a href=javascript:history.go(-1)><b>ulangi Lagi</b>"; elseif (empty($komentar)){ echo "Anda belum mengisikan KOMENTAR<br /> <a href=javascript:history.go(-1)><b>ulangi Lagi</b>";

elseif (strlen($_post['isi_komentar']) > 1000) { echo "KOMENTAR Anda kepanjangan, harap dikurangin atau dibagi jadi beberapa bagian.<br /> <a href=javascript:history.go(-1)><b>ulangi Lagi</b>"; else{ function antiinjection($data){ $filter_sql = mysql_real_escape_string(stripslashes(strip_tags(htmlspecialchars($data,ent_qu OTES)))); return $filter_sql; $nama = antiinjection($_post['nama_komenta']); $url = antiinjection($_post['url']); $isi = antiinjection($_post['isi_komentar']); if(!empty($_post['kode'])){ if($_post['kode']==$_session['captcha_session']){ // Mengatasi input komentar tanpa spasi $split_text = explode(" ",$isi_komentar); $split_count = count($split_text); $max = 57; for($i = 0; $i <= $split_count; $i++){ if(strlen($split_text[$i]) >= $max){ for($j = 0; $j <= strlen($split_text[$i]); $j++){ $char[$j] = substr($split_text[$i],$j,1); if(($j % $max == 0) && ($j!= 0)){ $v_text.= $char[$j]. ' '; else{ $v_text.= $char[$j]; else{ $v_text.= " ". $split_text[$i]. " ";

$sql = mysql_query("insert INTO komentar(id_berita,nama_komentar,url,isi_komentar,tgl, jam_komentar) VALUES('$_POST[id]','$nama_komentar','$url','$v_text','$tgl_sekarang','$jam_se karang')"); echo "<meta http-equiv='refresh' content='0; url=?view=detailberita2&id=$_post[id]'>"; else{ echo "Kode yang Anda masukkan tidak cocok<br /> <a href=javascript:history.go(-1)><b>ulangi Lagi</b></a>"; else{ echo "Anda belum memasukkan kode<br /> <a href=javascript:history.go(-1)><b>ulangi Lagi</b></a>";?>?> HALAMAN INDEX <?php if ($_GET['view']=='detailberita2'){ $detail=mysql_query("select * FROM berita,user,kategori WHERE kategori.id_kategori=berita.id_kategori AND id_berita='$_get[id]'"); $dbr = mysql_fetch_array($detail); $tgl = tgl_indo($dbr[tgl]); $baca = $dbr[dibaca]+1; echo "<span class=tanggal><img src=images/clock.gif> $dbr[hari], $tgl - $dbr[jam] WITA</span><br />"; echo "<span class=judul>$dbr[judul]</span><br />"; echo "<span class=posting> Kategori: <a href=?view=detailkategori&id=$dbr[id_kategori]- $dbr[kategori_seo].html><b>$dbr[nama_kategori]</b></a> - Dibaca: <b>$baca</b> kali</span><br />"; // Apabila ada gambar dalam berita, tampilkan if ($dbr[gambar]!=''){

echo "<p><span class=image><img src='images/img_berita/med_$dbr[gambar]' border=0> </span></p>"; //$isi_berita=nl2br($d[isi_berita]); // membuat paragraf pada isi berita echo "$dbr[isi_berita] <br />"; // Tampilkan judul berita yang terkait (maks: 5) echo "<img src=images/berita_terkait.jpg><br /><ul>"; // pisahkan kata per kalimat lalu hitung jumlah kata $pisah_kata = explode(",",$dbr[tag]); $jml_katakan = (integer)count($pisah_kata); $jml_kata = $jml_katakan-1; $ambil_id = substr($_get[id],0,4); // Looping query sebanyak jml_kata $cari1 = "SELECT * FROM berita WHERE (id_berita<'$ambil_id') and (id_berita!='$ambil_id' ) and (" ; for ($f=0; $f<=$jml_kata; $f++){ $cari1.= "tag LIKE '%$pisah_kata[$f]%'"; if ($f < $jml_kata ){ $cari1.= " OR "; $cari1.= ") ORDER BY id_berita DESC LIMIT 5"; $hasil1 = mysql_query($cari1); while($hsl=mysql_fetch_array($hasil1)){ echo "<li><a href=?view=detailberita&id=$hsl[id_berita]- $hsl[judul_seo].html>$hsl[judul]</a></li>"; echo "</ul>"; // Apabila detail berita dilihat, maka tambahkan berapa kali dibacanya mysql_query("update berita SET dibaca=$dbr[dibaca]+1 WHERE id_berita='$_get[id]'"); // Hitung jumlah komentar $komentar = mysql_query("select count(komentar.id_komentar) as jml from komentar WHERE

id_berita='$_get[id]' AND aktif='y'"); $kmt = mysql_fetch_array($komentar); echo "<br /><span class=judul><b>$kmt[jml]</b> Komentar : </span><br /><hr color=#ccc noshade=noshade />"; // Paging komentar $p = new Paging3; $batas = 10; $posisi = $p->cariposisi($batas); // Komentar berita $sqlq = mysql_query("select * FROM komentar WHERE id_berita='$_get[id]' AND aktif ='Y' LIMIT $posisi,$batas"); $jmlh = mysql_num_rows($sqlq); // Apabila sudah ada komentar, tampilkan if ($jmlh > 0){ while ($show = mysql_fetch_array($sqlq)){ $tanggal = tgl_indo($show[tgl]); // Apabila ada link website diisi, tampilkan dalam bentuk link if ($show[url]!=''){ echo "<span class=komentar><a name=$show[id_komentar] id=$show[id_komentar]><a hr ef='http://$s[url]' target='_blank'>$show[nama_komentar]</a></a></span><br />"; else{ echo "<span class=komentar>$show[nama_komentar]</span><br />"; echo "<span class=tanggal>$tanggal - $show[jam_komentar] WITA</span><br /><br />"; echo "<span class=komentar>$show[isi_komentar]</span><br>"; echo "<hr color=#ccc noshade=noshade />"; $jmldata = mysql_num_rows(mysql_query("select * FROM komentar WHERE id_ber ita='$_get[id]'")); $jmlhalaman = $p->jumlahhalaman($jmldata, $batas); $linkhalaman = $p->navhalaman($_get['halkomentar'], $jmlhalaman); echo "$linkhalaman";

// Form komentar echo "<br /><b>isi Komentar :</b> <table width=100% style='border: 1pt dashed #0000CC;padding: 10px;'> <form name='form' action=simpankomentar.php method=post onsubmit=\"return validasi (this)\"> <input type=hidden name=id value=$_get[id]> <tr><td>nama</td><td> : <input type=text name=nama_komentar size=40 maxlength=50> </td></tr> <tr><td>website</td><td> : <input type=text name=url size=40 maxlength=50></td></tr> <tr><td valign=top>komentar</td><td> <textarea name='isi_komentar' style='width: 300p x; height: 100px;'></textarea></td></tr> <tr><td> </td><td><img src='captcha.php'></td></tr> <tr><td> </td><td>(masukkan 6 kode diatas)<br /><input type=text name=kode size=6 ma xlength=6><br /></td></tr> <tr><td> </td><td><input type=submit name=submit value=kirim></td></tr> </form></table><br />";?> http://forumphp.web.id/ KEAMANAN $judul=trim($_post[judul]); $headline=trim($_post[headline]); $berita=trim($_post[berita]); if (empty($judul)){ echo "Anda belum mengisikan Judul<br /> <a href=javascript:history.go(-1)><b>ulangi Lagi</b>"; elseif (empty($headline)){ echo "Anda belum mengisikan headline<br /> <a href=javascript:history.go(-1)><b>ulangi Lagi</b>"; elseif (strlen($_post[headline]) > 1000) { echo "headlineanda kepanjangan, dikurangin atau dibagi jadi beberapa bagian.<br /> <a href=javascript:history.go(-1)><b>ulangi Lagi</b>";

else{ function antiinjection($data){ $filter_sql = mysql_real_escape_string(stripslashes(strip_tags(htmlspecialchars($data,ent_qu OTES)))); return $filter_sql; $judul= antiinjection($_post[judul]); $headline= antiinjection($_post[headline]); $berita= antiinjection($_post[berita]); http://www.kaskus.us/ Dalam Web Script batasan jumlah Login User sudah tentu ada, jika pada program dekstop akan mengakhiri program ketika User menginputkan username dan password salah dalam jumlah yang telah ditentukan, maka dalam Web biasanya akan ada dua kemungkinan. 1. Akun Akan diblokir dalam database, mungkin gambarnya seperti ini 2. Akun akan login kembali setelah beberapa menit kemudian tergantung banyaknya pengaturan jumlah waktu, ini disebut timer login Dalam posting kali ini, kami akan membahas No.1, yaitu bila User menginputkan Username dan Password salah dalam 3 kali, maka Username tersebut akan diblokir dan tidak bisa Login kembali sebelum menghubungi Admin. Langkahnya sebagai berikut : 1. Buat Database bebas, Misal Sumberdaya, Jika belum paham cara buat database MySql, silahkan baca kembali Cara Membuat database PHP MySql

2. Jika database sudah dibuat, langkah selanjutnya adalah Buatlah Tabel misalkan kita berinama Users, untuk cara membuat tabel silahkan baca artikel pada nomor 1, satu paket dengan cara pebuatan database 3. Didalam tabel Users, yang wajib diperhatikan adalah filed batas_login dan blokir, kedua field inilah yang nantinya akan kita mainkan dalam script, Logikanya, jika batas login user adalah 3 kali, maka status blokir akan berubah 'Y' ketika user menginputkan sebanyak 3 kali salah 4. Langkah selanjutnya adalah, kita lihat script pada Cek_login.php <?php include "config/koneksi.php"; function antiinjection($data){ $filter_sql = mysql_real_escape_string(stripslashes(strip_tags(htmlspecialchars($data,ent_quotes)))); return $filter_sql; $username = antiinjection($_post['username']); $pass = antiinjection(md5($_post['password'])); if (!ctype_alnum($username) OR!ctype_alnum($pass)){ echo "<script type=text/javascript> alert('script Login'); window.location = 'http://www.google.com/' //yang ini pengalihan ketika user salah </script>"; //header('location:index.php'); else{ $login=mysql_query("select * FROM users WHERE username='$username' AND

password='$pass' AND blokir='n'"); $ketemu=mysql_num_rows($login); $r=mysql_fetch_array($login); // Apabila username dan password ditemukan if ($ketemu > 0){ mysql_query("update users SET batas_login = 0 where username='$username'"); session_start(); session_register("namauser"); session_register("namalengkap"); session_register("passuser"); session_register("leveluser"); $_SESSION[namauser] = $r[username]; $_SESSION[namalengkap] = $r[nama_lengkap]; $_SESSION[passuser] = $r[password]; $_SESSION[leveluser] = $r[level]; header('location:media.php?module=home'); else{ mysql_query("update users SET batas_login = batas_login + 1 where username='$username'"); $a=mysql_fetch_array(mysql_query("select batas_login from users where username = '$username'")); $b=$a['batas_login']; if($b > 2){ mysql_query("update users SET blokir = 'Y' where username='$username'"); echo "<script type=text/javascript> alert('username $username Telah Di Blokir, Silahkan Hubungi Administrator'); window.location = 'http://www.google.com/' </script>"; else{ echo "<script type=text/javascript> alert('username Atau Password Tidak Benar Anda, Sudah $b Kali Mencoba');

?> window.location.href='index.php' </script>"; 5. Keterangan tulisan warna merah - http://www.google.com/ adalah script pengalihan program ketika user diblokir - users adalah nama table dalam database - batas_login adalah field pada tabel users yang menentukan banyaknya batasan login - blokir adalah field yang ada pada tabel user yang berfungsi sebagai aktif dan tidaknya user - $b adalah variabel yang digunakan untuk penetuan banyaknya jumlah login - 2 adalah jumlah maksimal login 6. Jalankan program, dan Jika program dijalankan maka akan terlihat seperti ini Form Login Masukan username yang telah ada pada database, kemudan masukan password yang salah, makan akan keluar alert, dan setelah memasukan passwrod sebanyak tigakali salah, maka alert terakhir adalah username diblokir

Catatan : Untuk membuat script batasan jumlah login, kita hanya merubah sedikit pada file cek_login.php dan manipulasi database pada tabel users. http://onebaja.blogspot.com/ Pergunakan Anti SQL Injection SQL Injection merupakan teknik menyusupkan perintah SQL kedalam query dengan cara memanipulasi input data pada sebuah aplikasi. Bagaimana menanggulanginya? Berikut adalah fungsi Anti SQL Injection yang sering saya pergunakan. function anti_sql_injection( $input ) { // daftarkan perintah-perintah SQL yang tidak boleh ada // dalam query dimana SQL Injection mungkin dilakukan $aforbidden = array ( "insert", "select", "update", "delete", "truncate", "replace", "drop", " or ", ";", "#", "--", "=" ); // lakukan cek, input tidak mengandung perintah yang tidak boleh $breturn=true; foreach($aforbidden as $cforbidden) { if(strripos($input, $cforbidden)) { $breturn=false; break; return $breturn; Cara memanfaatkan fungsi tersebut adalah sebagai berikut (contoh pada proses login dimana SQL injection kerap dilakukan) if(anti_sql_injection($_post['user']) and anti_sql_injection($_post['password'])) { // lakukan proses login else { die();

Selain itu, SQL injection juga dapat dicegah dengan pengaturan priveleges pada database yang dipergunakan. Misalnya, bagian situs yang hanya berfungsi memperlihatkan data melalui query select menggunakan user dengan privelege select saja. Bagian situs yang berfungsi untuk memberi kesempatan pembaca untuk berkomentar menggunakan user dengan privelege insert saja dst. Pergunakan session_regenerate_id() Untuk Pembuatan Session Selintas penggunaan session adalah teknik yang aman untuk menjaga sebuah halaman agar tidak bisa dikunjungi oleh sembarang orang. Misalnya, pemanfaatan session untuk halaman administrasi sebuah situs. Namun, session pun memiliki titik kelemahan yang bisa dieksploitasi attacker dan dipergunakan sebagai senjata untuk menyerang sistem aplikasi. Cara paling mudah untuk memanfaatkan session sebagai titik kelemahan sistem aplikasi adalah menggunakan metode fixation. Session faxation adalah metode dimana seorang attacker menyerang browser user sebelum login dilakukan. Yaitu dengan memasukkan id session untuk kemudian dimanfaatkan dengan tujuan tertentu. Berikut adalah ilustrasi bagaimana session fixation dilakukan untuk menyerang keamanan sistem aplikasi berbasis web. session_start(); if($_session['id_user']<>13) { // Proses login (authentifikasi) // Jika login sukses, jalankan perintah dibawah ini $_SESSION['id_user']=13; else { if($_session['id_user']==13) { // lakukan proses A Script diatas adalah bagian dimana variable id_user (13) didaftarkan sebagai variable session JIKA pengunjung belum login dan login yang dilakukan sukses. Artinya, jika login pernah dilakukan maka halaman ini tidak akan melakukan proses login dan langsung melakukan proses A. Langkah selanjutnya, pastikan bahwa browser yang digunakan bersih dari session sebelumnya. Lalu ketikan alamat script diatas dengan menambahkan PHPSESSID=1804. Misalnya nama file script diatas adalah test.php dan diletakkan di server.com, maka yang harus Anda tuliskan adalah http://server.com/test.php?phpsessid=1804 dan lakukan login. Setelah

itu, silakan Anda mencoba mengakses alamat tersebut diatas menggunakan browser lain atau komputer lain yang terhubung dengan server.com. Hasilnya, Anda akan melakukan proses A tanpa melakukan login! Hal diatas terjadi akibat id session yang dipergunakan saat session dibentuk adalah sama dengan id session yang sebelumnya telah diketikkan secara paksa dalam URL. Untuk menanggulangi hal ini, diperlukan fungsi untuk meng-generate ulang id session yaitu dengan menggunakan fungsi session_regenerate_id() sehingga bagian script diatas menjadi seperti dibawah ini: session_start(); if($_session['id_user']<>13) { // Proses login (authentifikasi) // Jika login sukses, jalankan perintah dibawah ini session_regenerate_id(); $_SESSION['id_user']=13; else { if($_session['id_user']==13) { // lakukan proses A Secara default, penggunaan fungsi session_regenerate_id() tidak serta merta akan menghapus session sebelumnya secara otomatis. Agar session_regenerate_id() menghapus/menghancurkan session sebelumnya, Anda perlu menambahkan parameter boolean true pada fungsi tersebut. Sayangnya, parameter ini hanya bisa digunakan untuk PHP dengan versi 5.1.0 keatas. http://phpug.or.id/