Keamanan dari suatu aplikasi sangat lah penting, bebicara soal keamanan sangat luas cakupannya maka dari itu kali ini saya hanya akan membahas salah satunya yaitu menganai CSRF(dilafalkan “sea-surf”).
Apa itu CSRF ?
CSRF atau Cross Site Request Forgeries adalah sebuah celah
keamanan dimana aplikasi web terlalu mempercayai sebuah request walaupun request tersebut bukan
berasal dari inisiatif pengguna.
Sebagai contoh :
Saya memiliki website,
dan saya adalah administrator. Untuk
mengakses halaman administrator saya diwajibka untuk login, disana ada saya
dapat melakukan proses administrasi seperti membuat atau menghapus artikel.
Untuk menghapus artikel saya dapat mengaksesnya dengan url :
www.websaya.com/artikel.php?action=hapus&id=1
maka setelah saya mengakses url tersebut
artikel dengan id 1 akan terhapus
seseorang tidak dapat mengakses url tersebut karena sistem
hanya akan melayani user yang telah login yaitu saya.
Lalu bagaimana CSRF bekerja?
Lalu ada sesorang
yang jahil mengetahui struktur url anda untuk menghapus artikel. Namun
dia tidak dapat mengakse url tersebut dikarenakan dia tidak memiliki hak akses
kehalaman administrasi anda. Lalu dengan cerdik dia menjebak anda dengan dengan cara dia member anda link sebagai
berikut
Dan anda tertarik untuk mengkliknya , dengan tidak sengaja
anda telah menghapus artikel anda sendiri tanpa disengaja.
Atau bisa saja dengan sembunyi-sembunyi dia menyembunyikan
tag sebagai berikut
<img src=”www.websaya.com/artikel.php?action=hapus&id=1”/>
Saat anda membuka website yang mengandung tag tersebut artikel anda akan terhapus
Lalu apa solusinya?
Begini ,
Untuk menampilkan link untuk manghapus saya menggunakan
script berikut:
<?php
Session_start();
$_SESSION['token'] = md5(uniqid());
echo '<a href=”www.websaya.com/artikel.php?action=hapus&id=1”>Hapus</a>';
?>
Apa fungsinya session denga nama token?
Jadi begini saat anda mengakses halaman yang berisi link
untuk menghapus artikel tersebut maka secara otomatis akan membuat session
dengan value hash yang unik.
Apa gunanya…?
Saat anda ingin menghapus artikel misal begini scriptnya
<?php
$id = $_GET[‘id’];
If(!isset($id) || empty($id)){
//tidak
manghapus karena id tidak ada atau kosong
} else {
$token
= $_SESSION[‘token’];
unset($_SESSION['token']);
if(empty($token)){
//kemungkinan
CSRF
} else {
//hapus
artikel disini
}
}
Begini penjelasannya pertama token yang telah terbuat saya simpan
kedalam variable $token
Lalu saya mengosongkan session token sehingga session yang tercipta dari link
hapus akan berubah secara dinamis,lalau sebelum maghapus artikel saya mengecek terlebih dahulu variable $token
kosong atau tidak jika tidak artikel di hapus.
Dengan begini jika link berasal dari website lain maka tidak
akan tercipta session token yang artinya perintah untuk mengahapus artikel
tidak dapat di ekseskusi.
Selamat mecoba…..!
0 komentar:
Posting Komentar