09071003050macam-macamauthentikasi
TRANSCRIPT
TUGAS SISTEM INFORMASI BERBASIS WEB
MACAM-MACAM JENIS AUTHENTIFIKASI PADA PHP
Di Susun Oleh:
1.Teddy Zugana(09071003050)
UNIVERSITAS SRIWIJAYA
FAKULTAS ILMU KOMPUTER
SISTEM INFORMASI 6B
ANGKATAN 2007
DAFTAR ISI
Table of Contents1 .SESSION 1
2.MEMBUAT SESSION 1
3. Menggunakan session pada array 2
4. Mencegah session Fixation 7
5. Mencegah session Hijacking 8
6.Penggunaan Session Pada login menggunakan AdoDB___________ 10
7 .COOKIES 20
8.Meguji Cookies 20
9. Membuat cookies 22
10. Memanggil cookies 23
11.Menghapus Cookies 23
12. Mengatasi Kegagalan mengirim cookie 24
1 3.HASHING COOKIES 25
14. Authetikasi PHP pada Port FTP 27
15.Authetikasi menggunakan Variable digest global PHP 27
BAB I
SESSION PADA PHP
1. Session
Session dalam kaitannya dengan waktu merupakan waktu seorang user mengunjungi
suatu situ. Session akan diawali ketika user mulai masuk suatu situs dan akan berakhir ketika
user menutup situs yang sikunjungi tersebut. Namun, perlu diingat bahwa tidak semua aplikasi
PHP membutuhkan session. Session ini diperlukan Karena suatu aplikasi web yang bersifat
database hampir tidak mungkin hanya terdiri atas satu halaman web saja sehingga pengunjung
situs tersebut juga dipastikan akan bolak-balik dari satu halaman ke halaman lainnya. Misalnya
pada situs took buku online, untuk membeli beberapa buku, pengunjung akan bolak-balik dari
satu halaman kategori ke halaman kategori lainnya. Rangkaian kunjungan inilah yang dapat
dipakai untuk menggambarkana sebuah session sehingga session diperlukan.
Saat user mengunjungi situs yang menerapkan session, user akan diberi sebuah session_id
sebagai identitas sebuah session.
Session dalam PHP dapat dimulai dengan 2 cara, yaitu secara otomatis dan menggunakan fungsi
session pada script PHP. Untuk memulai session secara otomatis, file php.ini perlu diedit
dengan melakukan perubahan pada baris session.auto_start=0 menjadi session.auto_start=1,
kemudian simpan perubahan tersebut dan restart kembali web server anda. Untuk memulai
session menggunakn fungsi pada PHP, gunakan fungsi session_start()
2. Membuat session
Sebelum mulai membuat session, anda perlu menentukan direktori yang akan digunakan untuk
menampung session yang anda buat. Lakukan perubahan pada file php.ini seperi anda hendak
lakukan padda saat menjalankan session secara otomatis. Perubahan nilai yang dilakukan pada
baris session.save_path setelah tanda = diisikan sesuai dengan pat direktori yang anda inginkan
untuk menyimpan session yang anda buat, kemudian simpan perubahan tersebut dan restart
kembali web server anda. Misalnya , contoh perubahan
Session.save_path=d:/tmp
Maka pastikan pada drive d terdapat direktori yang bernama tmp.
Perhatikan contoh penggunaan session_start berikut ini:
Nama file : testsession. php
<? php
Session_start();
$pesan=”session dimulai...”;
Print($pesan.”<br>”);
Print(”Id session :”.session_id());
?>
Contoh hasil eksekusi testsession.php ditunjukan seperti ini
3. Menggunakan session pada array
Pembuatan session dengan session_start() akan menghasilkan file session dengan nama sess_
diikuti oleh nilai session_id. Session dapat juga dibuat dengan fungsi session_register().
Penggunaan session_register menggunakan array PHP memungkinkan penyimpanan variabel
dan nilainya
Perhatikan contoh penggunaan session_register pada array menggunakan 3 script berikut:
Nama file : ftamu.htm
<!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.10 Transitional //EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<title>Buku Tamu</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”>
</head>
<body>
<h1>Selamat Datang</h1>
Silakan isi buku tamu:<br>
<form name=”tamu” method=”post” action=”sesreg.php”>
<pre>
Nama:<input type=”text” name=”nama”>
Email :<input type=”text” name=”email”>
<input type =”submit” value=”kirim”>
</pre>
</form>
</body>
</html>
File :sesreg.php
<?
session_start();
$_SESSION[nama]=$_POST['nama'];
$_SESSION[email]=$_POST['email'];
?>
<html>
<head>
<title>Penggunaan Session_register()</title>
</head>
<body>
<?
Print("<h1>Hallo ".$_POST['nama']."</h1>");
Print("<h1>Email anda:".$_POST['email']."</h1>");
Print("Terima kasih telah mengisi buku tamu kami <br>");
?>
<a href="ujisession.php">Uji session</a>
</body>
</html>
Nama file:ujisession.php
<?
session_start();
?>
<html>
<head>
<title> Penggunaan session_register()</title>
</head>
<body>
<?
Echo "session anda adalah <br>";
Print("<h3>Hallo". $_SESSION['nama']."</h3>");
Echo "<h1> Email anda".$_SESSION['email']."</h1><br>";
Echo " Test session akan segera dihapus";
session_destroy():
?>
<a href=”ftamu.htm”>kembali ke Form</a>
</body>
</html>
Gambar Form tamu Untuk session:
4. Mencegah session Fixation
Id session (session identifier ) adalah informasi yang sangat berguna bagi penyerang. Apabila
penyerang berhasil mendapatkan id session. Ia bias menggunakan sebagai senjata untuk
menyerang system aplikasi. Pada umumnya, ada tiga metode yang bias digunakan untuk
mendapatkan id session yang valid yaitu:
1. Prediction . Prediksi adalah metode yang paling ringan, di mana penyerang mencoba
menebak id session. Metode ini jarang berhasil, jika anda menggunakan fungsi random dan
hashing
2. Capture. Menangkap id session adalah jenis serangan yang umum. Metode ini tidak akan
berhasil apabila id session disebarkan ke dalam cookie atau variable get
3.Fixation Metode ini sangat sederhana bagi penyerang untuk mendapatkan id session yang
valid, di mana penyerang menggunakan fixed id.
Apabila dilihat dari waktu kejadiannya, session fixation adalah jenis serangan di mana attacker
menyerang browser user sebelum user tersebut login. Serangan ini secara tidak langsung juga
difasilitasi oleh lemahnya proteksi sistem aplikasi.
Untuk bisa mencegah session fixation, anda tentu perlu mengetahui bagaimana penyerang
melakukan aksinya. Sebagai ilustrasi, anda memiliki kode sebagai berikut:
Session_start();
$_SESSION[’user’]=’admin’;
Kode diatas merepresentasikan simulasi login oleh admin, di mana ketika login sesuai, kode
akan menset session . Selanjutnya, dengan menggunakan komputer lain, atau paling tidak
browser lain, penyerang mengakses alamat yang sama dengan menambahkan id PHPSESSID.
Contohnya seperti berikut:
http://path_URL/TestFixation.php?PHPSESSID=1234
Aksi penyerang akan mengakibatkan dibuatnya session dengan nilai sama dan id sesuai yang
dikirimnya, setelah itu, penyerang bisa menggunakan id yang telah dikirimkan melalui
parameter URL.
Solusi untuk mencegah session fixation adalah dengan memanfaatkan fungsi
session_regenerate_id(). Fungsi ini akan men-generate current id dengan nilai yang baru.
Implementasinya, re-generate id session baru setiap login berhasil dilakukan, contohnya seperti
berikut:
Session_start();
$_SESSION[’user’]=’admin’;
Echo ‘<p>id:’,session_id();
If(!empty($_SESSION))
{session_regenerate_id(true);
}
Kode diatas akan selalu men-generate id session baru jika session bukan merupakan session
baru. Secara default, session_regenerate_id() tidak akan menghapus session yang lama. Anda
bisa menambahkan parameter opsional berupa boolean true untuk menghapus session lama
secara otomatis. Parameter ini hanya bisa digunakan di PHP 5.1.0 ke atas.
5. Mencegah session Hijacking
Jenis serangan lain yang berbasis pada informasi session adalah session hijacking. Berbeda
dengan session fixation, di sini penyerang melakukan aksinya setelah user login ke komputer
server. Sebenarnya serangan ini juga ada kaitannya dengan session fixation.
Pendekatan yang baik untuk mencegah session hijacking adalah dengan menyebarkan token.
Langkah ini harus didukung dengan penggunaan algoritma hashing atau enskripsi. Contohnya
seperti berikut:
session_start()
$token=md5($_SERVER[’HTTP_ACCEPT_ENCODING’]
. $_SERVER[‘HTTP_ACCEPT_LANGUAGE’]
. $_SERVER[‘HTTP_USER_AGENT’]);
If(isset($_SESSION[‘HTTP_USER_AGENT’]))
{
If($_SESSION[‘HTTP_USER_AGENT’]!=$token)
{ exit(‘invalid…’);
}
else
{$_SESSION[‘HTTP_USER_AGENT’]=$token;
}
}
Print_r($_SESSION);
Perlu diketahui, keamanan data session tidak hanya dipengaruhi oleh teknik hashing ataupun
enskripsi. Ada factor lain yang perlu anda perhatikan, yaitu lokasi penyimpanan session. Dimana
normalnya terletak di direktori penyimpanan (tmp). Pastikan bahwa direktori ini tidak bisa
diakses oleh orang lain. Akan lebih baik lagi jika session ditempatkan di memori, dengan
mengatur konfigurasi directive session.save _path, dan memberinya nilai mm.
6.Penggunaan Session Pada login menggunakan AdoDB
Dengan menggunakan fungsi-fungsi session, kita bisa membagun suatu mekanisme login.
Skenarionya begini: Pengunjung mekakses halaman utama index.php, dimana terdapat form
isian login form isian user dan form isian password untuk login. Ia harus memasukkan
username dan password yang valid agar dapat mengakses informasi utama di suatu situs ,
kemudian setelah berhasil akan disediakan link untuk logout dan diharapkan telah
menyediakan plugin inodb pada directory active pada web yang akan dibuat.
Untuk itu maka diperlukan suatu database untuk menampung data user yang terdaftar dalam
contoh ini menggunakan mysql
Sintaks sql untuk table user yang akan digunakan dalam aplikasi login session:
CREATE TABLE IF NOT EXISTS `users` (
`No` bigint(100) NOT NULL auto_increment,
`username` varchar(100) NOT NULL,
`nama_lengkap` varchar(100) NOT NULL,
`password` varchar(100) NOT NULL,
`level` varchar(100) NOT NULL,
`id_session` varchar(100) NOT NULL,
PRIMARY KEY (`No`)
)
Kemudian isilah table tersebut dengan user yang anda inginkan untuk pengetestan login nanti
Kita akan membuat file konektor AdoDb untuk koneksi menggunakan ado DB seperti contoh
berikut
File :connector.php
<?
require_once("adodb/adodb.inc.php");
$db = ADONewConnection('mysql');
$db->Connect('localhost','root','','TA');
?>
Kemudian kita akan membuat script untuk form login sebagai interface login:
File:index.php
<html>
<head>
<title></title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body OnLoad="document.login.username.focus();">
<div id="header">
<div id="content">
<h2>Login</h2>
<img src="images/login-welcome.gif" width="97" height="105" hspace="10" align="left">
<form name="login" action="cek_login.php" method="POST" onSubmit="return validasi(this)">
<table>
<tr><td>Username</td><td> : <input type="text" name="username"></td></tr>
<tr><td>Password</td><td> : <input type="password" name="password"></td></tr>
<tr><td colspan="2"><input type="submit" value="Login"></td></tr>
</table>
</form>
<p> </p>
</div>
<div id="footer">
Copyright © <?echo date("Y");?>. All rights reserved.
</div>
</div>
</body>
</html>
File :cek_login.php
Kemudian akan membuat file cek_login.php yang digunakan untuk mencheck login user disertai
validasi input login:
<?php
include("connector.php");
function anti_injection($data){
$filter =
mysql_real_escape_string(stripslashes(strip_tags(htmlspecialchars($data,ENT_QUOTES))));
return $filter;
}
// pastikan username dan password adalah berupa huruf atau angka.
if (!ctype_alnum($username) OR !ctype_alnum($pass)){
echo "Sekarang loginnya tidak bisa di injeksi lho.";
}
else{
$login=$db->Execute("SELECT * FROM users WHERE username='$username' AND
password='$pass'");
$ketemu2=$db->Execute("SELECT COUNT(*) FROM users WHERE username='$username' AND
password='$pass'");
$ketemu3=$ketemu2->GetArray();
$ketemu=$ketemu3[0][0];
$r=$login->GetArray();
// Apabila username dan password ditemukan
if ($ketemu > 0){
session_start();
$_SESSION[namauser] = $r[0][username];
$_SESSION[namalengkap] = $r[0][nama_lengkap];
$_SESSION[passuser] = $r[0][password];
$_SESSION[leveluser] = $r[0][level];
$sid = session_id();
mysql_query("UPDATE users SET id_session='$sid' WHERE username='$username'");
header('location:media.php?module=home');
}
else{
echo "<link href=../config/adminstyle.css rel=stylesheet type=text/css>";
echo "<center>LOGIN GAGAL! <br>
Username atau Password Anda tidak benar.<br>
Atau account Anda sedang diblokir<br>";
echo "<a href=index.php><b>ULANGI LAGI</b></a></center>";
}
}
?>
Kemudian Menampilkan halaman bila berhasil login
File :media.php
<?php
session_start();
if (empty($_SESSION[username]) AND empty($_SESSION[passuser])){
echo "<link href='style.css' rel='stylesheet' type='text/css'>
<center>Untuk mengakses modul, Anda harus login <br>";
echo "<a href=index.php><b>LOGIN</b></a></center>";
}
else{
?>
<html>
<head>
<title></title>
<script type="text/javascript" src="../nicEdit.js"></script>
<script type="text/javascript">
bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });
</script>
</script>
<link href="style.css" rel="stylesheet" type="text/css" />
<link href="style3.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="header">
<div id="menu">
<ul>
<li><a href=?module=home>» Home</a></li>
<?php include "menu.php"; ?>
<li><a href=logout.php>» Logout</a></li>
</ul>
<p> </p>
</div>
<div id="content">
<?php include "content.php"; ?>
</div>
<div id="footer">
Copyright © <?echo date("Y");?>. All rights reserved.
</div>
</div>
</body>
</html>
<?php
}
?>
Kemudian file untuk logout pada halaman:
<?php
session_start();
session_destroy();
// Apabila setelah logout langsung menuju halaman utama website, aktifkan baris di bawah ini:
// header('location:http://www.alamatwebsite.com');
?>
<html>
<head>
<title></title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<div id="header">
<div id="content">
<h2>SUCCESS LOGOUT FROM SYSTEM <b>[LOGOUT]<b></h2>
<center>
<br>
<a href='index.php'> << BACK TO LOGIN FORM</a>
</center>
<p> </p>
</div>
<div id="footer">
Copyright © <?echo date("Y");?>. All rights reserved.
</div>
</div>
</body>
</html>
Beberapa contoh gambar login menggunakan session
Sukse login
Sukses logout
BAB II
COOKIES PADA PHP
7.COOKIES
Cookies dapat digunakan di dalam script PHP untuk menyimpan bit-bit kecil informasi tentang
user. Suatu cookies adalah sejumlah kecil data yang disimpan oleh browser user bersamaan
dengan suatu permintaan sari suatu server atau script. Cookies pada browser client akan
dikirim pertama kali ke server dan kemudian disimpan pada browser web.
Cookies memiliki kemampuan untuk menyimpan dan memanggil kembali data yang ada pada
hardisk client. Hanya saja cookies ini bersifat sementara sehingga keyika browser ditutup, atau
waktu penyimpanan cookies sudah habis, cookies juga akan dihapus. Dengan demikian,, ketika
browser dibuka kembali atau melewati jangka waktu tertentu, nilai cookies akan kosong karena
suatu cookies terdiri dari nama, nilai dan tanggal nilai expires cookie.
8.Menguji Cookies
Sebelum melakukan pembuatan cookies, lebih baik anda melakukan pengujian terlebih dahulu
pada browser yang anda pakai, apakah briwser anda mendukung cookies atau tidak. Perlu anda
ketahui bahwa terkadang fungsi untuk menerima cookies pada beberapa server sering
dimatikan dengan alasan keamanan, walupun tidak ada masalah pada kenyataannya, karena
cookies memeiliki batasan. Suatu serever hanya dapat menyimpan 20 cookies pada browser
pemakai, masing-masing cookies berukuran terbatas sampai sebesar 4 KB.
File:testcookies.php
<?
$status=0;
If(isset($cookieku)&&($cookieku==”testcookie”))
{$status=1;
}
If(!isset($CK))
{
Setcookie(”cookieku”,”testcookie”);
header(”Location:$PHP_SELF?CK=1”);
exit;
}
?>
<html>
<head>
<title>Menguji cookie</title>
</head>
<body>
Status cookie:
<?
If($status==1)
{echo ”mendukung cookie”;
}
Else
{ echo ”tidak mendukung cookie”;
}
?>
</body>
</html>
9.Membuat cookies
Untuk membuat cookie digunakan fungsi setcookie() dengan sintaks sebagai berikut:
Setcookie(String_name,String_value,int_expire,string_path,string _domain,int_secure)
Semua argumen, kecuali string_name , bersifat opsional
Keterangan:
String_name adalah nama variabel yang digunakan untuk menyimpan nilai cookie yang
dapat diakses nantinya dengan $_COOKIE atau array $HTTP_COOKIE_VARS.
String_value merupakan nilai yang dilewatkan ke variabel string_name.
Int_expire adalah batas waktu expire cookie yang ditentukan
String_path adalah path direktori web server yang berlaku untuk cookie
String_domain merupakan domain server yang mendefinisikan cookie
Int_secure nilai parameter keamanan transmisi melalui HTTPS
<?
Setcookie(”nama”,”kasiman”,time()+60,”/”,”127.0.0.1”,0);
?>
<html>
<head>
<title>membuat cookie</title>
</head>
<body>
<h1>cookie</h1>
</body>
</html>
Pada script diatas cookie diset hanya berlaku 1 menit dalam nilai set cookie expire time()+60
yang artinya cookie hanya berlaku selama 60 detik atau 1 menit, dan fungsi cookie ini harus
dideklarasikan sebelum output program dikirim ke browser client yang artinya harus ditulis
sebelum penulisan tag html
10. Memanggil Cookies
Untuk memanggil cookie, cukup ketikan nama cookie
Perhatikan contoh pemanggilan cookie berikut:
<?
$namac=$HTTP_COOKIE_VARS[”nama”];
$nama2=$_COOKIE[”nama2”];
Print(”nama :$namac<br>”);
Print(”nama :$nama2<br>”);
Print(”nama :$nama<br>”);
?>
11.Menghapus Cookies
Untuk menghapus cookie, panggil fungsi set cookie dengan hanya menyebutkan nama cookie
sebagai argumennya atau hanya denga menyebutkan nama cookie sebagai argumen pertama
dan string kosong pada argumen nilai.
File :setcookie
<?
Setcookie(”nama”,”kasiman”);
Print(”cookie telah terbentuk”);
?>
<html>
<body>
Cookie
</body>
</html>
File :Hapus cookie
<?php
$namac=$HTTP_COOKIE_VARS[”nama”];
//hapus cookie
Setcookie(”nama”);
Print(”nama sebelum dihapus: $namac”);
Print(”nama sesudah dihapus:$_COOKIE[’nama’]”);
?>
12. Mengatasi Kegagalan mengirim cookie
Apakah anda pernah mengalami kegagalan saat mengirim cookie? Misalnya , Mendapat respon
berupa pesan ”header already sent” dari parser PHP. Ini berarti bahwa cookie yang nada
tetapkan tidak bisa dikirim dan diset.
Kegagalan seperti itu disebabkan karena kita terlebih dahulu mengirim output lain ke browser
sebelum memanggil fungsi setcookie(). Contohnya seperti berikut ini :
<?
Echo ’hii..’;
Setcookie(’mycookie’,’test’);
?>
Kode diatas berpotensi besar mengakibatkan cookie gagal dikirim. Spserti diketahui, pesan
HTTP memiliki header dan body yang nantinya dikirim ke browser client. Begitu anda sudah
mengirim body, anda tidak diperkenankan lagi untuk mengirim header lainnya. Adapun
penulisan yang disarankan adalah sebagai berikut:
Setcookie (’mycookie’,’test’);
Echo ”test”;
Atau
<?
Setcookie(’mycookie’,’test’);
?>
<html>
<body>
</body>
</html>
Kegagalan semacam ini juga berlaku ketika anda mengirim header HTTP. Misalnya, browser
sudah mencetak output body sebelum header berhasil dikirim
13.Hashing Cookie
Umumnya, kita menggunakan cookie untuk menyimpan nama yang kemudian diikuti password.
Bagaimanapun juga, menyimpan informasi sebagai teks sederhana akan lebih membuka
peluang terhadap penyerangan . Cara seperti ini harus dihindari, dan sebaiknya anda
menggunakan algoritma hash untuk menyimpan cookie.
Salah satu algoritma hashing yang cukup populer dan sering digunakan adalah message-digest
(MD). Algoritma ini diimplementasikan dalam fungsi md5().Contoh penggunaannya sebagai
berikut:
If(!empty($_POST[’nama’])&&!empty($_POST[’pass’]))
{$time=$time();
$nama=$_POST[’nama’];
$pass=md5($_POST[’pass’]);
If(isset($_POST[’remember’]))
{$remember=$_POST[’remember’];
}
}
$sql=’SELECT nama,password FROM login WHERE nama=”’.$nama.’” AND password =”’.
$pass.’”’;
$res=mysql_query($db,$sql) or die(’sql error’);
If(($res!=null) && (mysql_num_rows($res)==1))
{$data=$nama.’-’.$pass;
If(isset($_POST[’remember’]) && ($_POST[’remember’]==’yes’))
{if(setcookie(’info’,$data,$time+3600)==true)
{$lifetime=$time+3600;
Echo ’cookie Lifetime: ’,$lifetime;
}
}
}
?>
<p><a href=”./logout.php”>logout</a>
<?
ELSE
{exit(’acesss denied’);
}
Mysql_free_result($res);
Mysql_close($db);
?>
14. Authetikasi PHP pada Port FTP
Untuk dapat melalukan login pada port 21 yaitu FTP untuk pengaksesan file dapat
menggunakan fungsi dalam php yaitu dengan sintaks:
ftp_login(ftp_connection,username,password)
keterangan atribut:
ftp_connection unutuk mejelaskan server yang kan diakses contoh 127.0.0.1
username yaitu username yang digunakan untuk login pada ftp
password. Ialah password yang digunakan untuk authetikasi username yang mengakses ftp port 21
contoh sintaks pada php
<?php
$conn = ftp_connect("ftp.testftp.com") or die("Could not connect");
ftp_login($conn,"admin","ert456");
ftp_close($conn);
?>
15.Authetikasi menggunakan Variable digest global PHP
Authentikasi digest dengan variabel global hanya berlaku pada PHP apache modul
Berikut contoh dasar penggunaaan:
Example #6 Basic HTTP Authentication example
<?phpif (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo 'Text to send if user hits Cancel button'; exit;} else { echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";}?>
Example #7 Digest HTTP Authentication example
<?php$realm = 'Restricted area';
//user => password$users = array('admin' => 'mypass', 'guest' => 'guest');
if (empty($_SERVER['PHP_AUTH_DIGEST'])) { header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Digest realm="'.$realm. '",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"');
die('Text to send if user hits Cancel button');}
// analyze the PHP_AUTH_DIGEST variableif (!($data = http_digest_parse($_SERVER['PHP_AUTH_DIGEST'])) || !isset($users[$data['username']])) die('Wrong Credentials!');
// generate the valid response$A1 = md5($data['username'] . ':' . $realm . ':' . $users[$data['username']]);$A2 = md5($_SERVER['REQUEST_METHOD'].':'.$data['uri']);$valid_response = md5($A1.':'.$data['nonce'].':'.$data['nc'].':'.$data['cnonce'].':'.$data['qop'].':'.$A2);
if ($data['response'] != $valid_response) die('Wrong Credentials!');
// ok, valid username & passwordecho 'Your are logged in as: ' . $data['username'];
// function to parse the http auth headerfunction http_digest_parse($txt){ // protect against missing data $needed_parts = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1); $data = array(); $keys = implode('|', array_keys($needed_parts));
preg_match_all('@(' . $keys . ')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $txt, $matches, PREG_SET_ORDER);
foreach ($matches as $m) { $data[$m[1]] = $m[3] ? $m[3] : $m[4]; unset($needed_parts[$m[1]]); }
return $needed_parts ? false : $data;}?>
DAFTAR PUSTAKAKadir Abdul, 2007. Konsep Sistem Informasi , Bandung. Penerbit Andy
Peranginangin kasiman 2005, Aplikasi web dengan PHP,
Bandung .Penerbit andy
Dwi Prasetyo Didik, 2006. 101 Tips and trik pemprograman PHP,
Jakarta. Penerbit Elex Media komputindo
http://www.php.net/
http://www.w3schools.com