Belajar PHP : Mengakali Session PHP untuk Aplikasi tanpa Cookie - Elang Sakti
Download Ebook Belajar Arduino PDF, Arduino untuk pemula
Jasa Pembuatan Program Arduino, pemrograman Arduino
# Hack Your Skills! to be Professional Mechatronics

Belajar PHP : Mengakali Session PHP untuk Aplikasi tanpa Cookie

Tidak ada komentar

Aplikasi tanpa Cookie yang dimaksud adalah aplikasi yang tidak bisa menyimpan cookie layaknya browser. Sehingga, misal membuat aplikasi Android yang mengakses dari dari webserver PHP, kemudian ingin membuat session sendiri, atau aplikasi berbasis command line yang tidak bisa menyimpan cookie. Intinya, trik ini bisa digunakan untuk mengakali session pada aplikasi PHP yang diakses dari aplikasi lainnya.

Masalah ini muncul ketika saya membuat aplikasi kecil untuk mengakses web app dengan aplikasi client yang tidak mendukung penyimpanan cookie layaknya browser. Sebenarnya sih masalah tersebut bisa diselesaikan dengan menggunakan bahasa pemrograman atau API yang bisa menyimpan cookie di aplikasi client tadi. Terlepas dari aplikasi yang dapat menyimpan cookie tadi, muncul pertanyaan di benak, "sebenarnya bagaimana sih cara php menyimpan session dan user yang login tidak tertukar datanya?"

Penjelasan singkat dari pertanyaan tersebut yaitu, ketika session di server diaktifkan, maka php akan membuat random id untuk menyimpan session masing-masing user. Session id tersebut akan dikirim ke browser client dan browser client akan menyimpannya dalam bentuk cookie. Artinya, ketika kita memiliki cookie user lain, maka kita akan masuk ke session user tersebut. Oleh sebab itu, pencurian cookie pada keamanan website merupakan salah satu hal yang sangat berbahaya.

Baik, kita lupakan dulu masalah pencurian cookie dan dampak bahayanya pada aplikasi web.

Kasus yang akan saya selesaikan begini, saya akan membuat aplikasi kecil dari php yang berbasis command line. Nanti script tersebut akan dijalankan di command prompt windows. Pada dasarnya command prompt windows tidak mendukung penyimpanan cookie layaknya browser. Kita coba tes script di server di bawah ini yang saya simpan pada file http://127.0.0.1/session/app.php.

<?php
session_start();

if(isset($_GET['nama'])){
    $_SESSION['nama'] = $_GET['nama'];
    echo 'Welcome '.$_GET['nama'].'!';
    exit;
}

if(isset($_SESSION['nama'])){
    echo 'Welcome back '.$_SESSION['nama'].'!';
}else{
    echo '=))';
}
?>

Kunjungan pertama, saya mengakses url http://127.0.0.1/session/app.php
Hasil : =))
Alasan : karena session memang belum diaktifkan.

Kunjungan kedua, saya mengakses url http://127.0.0.1/session/app.php?nama=elangsakti
Hasil : Welcome elangsakti!
Alasan : karena url disisipkan parameter nama=elangsakti

Kunjungan ketiga, saya mengakses url http://127.0.0.1/session/app.php (seperti kunjungan pertama)
Hasil : Welcome back elangsakti!
Alasan : karena session sudah terbentuk

Kunjungan diatas saya lakukan di browser. Kunjungan ketiga dan seterusnya akan menghasilkan pesan "Welcome back elangsakti!" karena session sudah tersimpan di browser dan di server. Selanjutnya kita coba kunjungi url tersebut dari command prompt:

Kunjungan pertama, dilakukan dengan perintah: php -r "print_r(curl_exec(curl_init('http://127.0.0.1/session/app.php')));";
Hasil : =))1
Alasan : karena session memang belum diaktifkan.

Kunjungan kedua, dilakukan dengan perintah: php -r "print_r(curl_exec(curl_init('http://127.0.0.1/session/app.php?nama=cmd_elangsakti')));";
Hasil : Welcome cmd_elangsakti!1
Alasan : karena url disisipkan parameter nama=cmd_elangsakti

Kunjungan ketiga, dilakukan dengan perintah: php -r "print_r(curl_exec(curl_init('http://127.0.0.1/session/app.php')));";
Hasil : =))1
Alasan : karena tak ada session yang menjadi acuan sehingga tidak dikenali
Belajar PHP : Mengakali Session PHP untuk Aplikasi tanpa Cookie command prompt
Gambar perintah cmd

Lalu bagaimana solusinya jika menggunakan aplikasi yang tidak bisa menyimpan cookie? Salah satu solusinya, kita ambil id session di server (di php bisa menggunakan session_id()), kemudian kita kirim ke client. Di sisi client, kita simpan session id tersebut dan menyisipkannya ketika kita akan mengakses server. Dengan demikian, kita harus memodifikasi script yang ada di server. Berikut ini adalah modifikasi script file app.php:

<?php
if(isset($_GET['sessid'])){
    session_id($_GET['sessid']);
    session_start();
}else{
    session_start();
}

if(isset($_GET['nama'])){
    $_SESSION['nama'] = $_GET['nama'];
    echo 'Welcome '.$_GET['nama']."!\n";
    echo "session id : ".session_id()."\n";
    exit;
}

if(isset($_SESSION['nama'])){
    echo 'Welcome back '.$_SESSION['nama'].'!';
}else{
    echo '=))';
}
?>

Mari kita coba lagi:

Kunjungan pertama, dilakukan dengan perintah: php -r "print_r(curl_exec(curl_init('http://127.0.0.1/session/app.php')));";
Hasil : =))1
Alasan : karena session memang belum diaktifkan.

Kunjungan kedua, dilakukan dengan perintah: php -r "print_r(curl_exec(curl_init('http://127.0.0.1/session/app.php?nama=cmd_elangsakti')));";
Hasil : Welcome cmd_elangsakti!
        session id : 25nmrbqmj90mrp9232tuvr2et3
        1
Alasan : karena url disisipkan parameter nama=cmd_elangsakti dan mendapatkan id session '25nmrbqmj90mrp9232tuvr2et3', id inilah yang akan kita gunakan pada kunjungan berikutnya

Kunjungan ketiga, dilakukan dengan perintah: php -r "print_r(curl_exec(curl_init('http://127.0.0.1/session/app.php?sessid=25nmrbqmj90mrp9232tuvr2et3')));";
Hasil : Welcome back cmd_elangsakti!1
Alasan : session dikenali berdasarkan id session yang kita kirimkan
Belajar PHP : Mengakali Session PHP untuk Aplikasi tanpa Cookie command prompt 2
Gambar cmd

Dengan cara tersebut, kita bisa menggunakan session pada aplikasi yang tidak mendukung penyimpanan cookie. Perlu diperhatikan bahwa jika session id tersebut dipakai oleh orang lain, maka orang lain akan diidentifikasi sebagai pemilik user id tersebut. Sekedar contoh, pada browser, session user yang aktif dikenal dengan nama 'elangsakti'. Akan tetapi jika kita menggukanan session id yang dimiliki oleh user 'cmd_elangsakti', maka pengguna browser tadi akan diidentifikasi sebagai 'cmd_elangsakti'.

Perhatikan gambar berikut, gambar user yang asli, dan gambar user yang menggunakan session id cmd_elangsakti.
Belajar PHP : Mengakali Session PHP untuk Aplikasi tanpa Cookie browser android
Gambar session user elangsakti
Belajar PHP : Mengakali Session PHP untuk Aplikasi tanpa Cookie browser android2
Gambar mengganti session id dengan user lainnya

Nah, itulah bahaya dari cookie stealing. Mungkin kapan-kapan akan kami bahas tentang cookie stealing :)

Written by ElangSakti
Belajar PHP : Mengakali Session PHP untuk Aplikasi tanpa Cookie
Bahasan: Aplikasi tanpa Cookie yang dimaksud adalah aplikasi yang tidak bisa menyimpan cookie layaknya browser. Sehingga, misal membuat aplikasi A...
Published at Sabtu, 14 Maret 2015, Updated at Sabtu, 14 Maret 2015
Reviewed by dr. on
Rating: 4.7

Tidak ada komentar :

Posting Komentar