State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$...

20
Agi Putra Kharisma, ST., MT. State HTTP, PHP 1 Pemrograman Web State

Transcript of State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$...

Page 1: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

State  

HTTP,  PHP  

1  Pemrograman  Web  -­‐  State  

Page 2: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

HTTP  1.1  =  Stateless  •  Salah  satu  sifat  protokol  HTTP  1.1  adalah  stateless  

•  Pada  interaksi  yang  bersifat  stateless,  maka  antara  suatu  interaksi  request-­‐response  dengan  request-­‐response  lainnya  bersifat  independen,  @dak  memiliki  keterkaitan  satu  sama  lain.  

•  Server  HTTP  @dak  mengingat  apa  yang  terjadi  pada  interaksi  request-­‐response  yang  terjadi.  

•  Pada  interaksi  stateless,  server  HTTP  9dak  menyimpan  state  yang  berhubungan  dengan  klien.  

2  Pemrograman  Web  -­‐  State  

Page 3: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Contoh  Kasus:  Stateful  

3  Pemrograman  Web  -­‐  State  

Klien   Server  Minta  halaman  novel  

Ini  halaman  novel  

Minta  halaman  selanjutnya  

Ini  novel  halaman  kedua  

Minta  halaman  selanjutnya  

Ini  novel  halaman  ke@ga  

Minta  halaman  selanjutnya  

Ini  novel  halaman  terakhir  

Page 4: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Contoh  Kasus:  Stateless  

4  Pemrograman  Web  -­‐  State  

Klien   Server  Minta  halaman  novel  

Ini  halaman  novel  

Minta  novel  halaman  kedua  

Ini  novel  halaman  kedua  

Minta  novel  halaman  ke@ga  

Ini  novel  halaman  ke@ga  

Minta  novel  halaman  keempat/terakhir  

Ini  novel  halaman  keempat/terakhir  

Page 5: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Demo  Aplikasi  Novel  

•  ‘Stateful’*:  Dengan  Cookie    •  Stateful:  Dengan  Session  •  Stateless:  Dengan  Query  String  

*  Dengan  cookie,  kita  dapat  menyimulasikan  interaksi  ala  ‘stateful’,  walaupun  pada  dasarnya  interaksi  tersebut  tetap  bersifat  stateless.  

5  Pemrograman  Web  -­‐  State  

Page 6: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Demo  Aplikasi  Novel  

•  ‘Stateful’:  Dengan  Cookie    

•  Stateful:  Dengan  Session  

•  Stateless:  Dengan  Query  String  

6  Pemrograman  Web  -­‐  State  

Page 7: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Contoh  Kasus:  Kaskus  

7  Pemrograman  Web  -­‐  State  

Current  page  

hFp://kaskus.co.id/thread/…./2   hFp://kaskus.co.id/thread/…./3  

hFp://kaskus.co.id/thread/…./4   hFp://kaskus.co.id/thread/…./2  

Page 8: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Kapan  Butuh  State?  

Beberapa  kondisi  kita  membutuhkan  state  pada  aplikasi  yang  kita  buat:  •  Bagaimana  pengguna  tetap  logged-­‐in  ke@ka  dia  berpindah-­‐pindah  halaman?  

•  Bagaimana  keranjang  belanja  pengguna  tetap  tersimpan  ke@ka  pengguna  tersebut  melihat  –  lihat  barang  di  halaman  lain  untuk  ditambahkan  ke  keranjang  belanja  tersebut?  

8  Pemrograman  Web  -­‐  State  

Page 9: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Beberapa  Cara  Mempertahankan  State  

•  Menggunakan  variabel  GET/POST  yang  dikirim  dari  halaman  ke  halaman  

•  Menggunakan  HTTP  header  •  Menggunakan  cookies  •  Menggunakan  sessions    

9  Pemrograman  Web  -­‐  State  

Page 10: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Cookie  •  Cookie  adalah  file  kecil  yang  diletakkan  oleh  server  pada  komputer  pengguna.  

•  Cookie  dikirim  se@ap  kali  pengguna  mengakses  web  yang  menjadi  pemilik  cookie  tersebut.  Sehingga,  ukuran  cookie  perlu  diperha@kan  supaya  @dak  membebani  jaringan  secara  berlebihan.  

•  Ke@ka  kita  mendefinisikan  suatu  cookie,  maka  kita  menentukan  berapa  lama  cookie  tersebut  valid.  Jika  telah  melampaui  waktu  valid  (expires),  maka  cookie  tersebut  akan  dihapus.  

10  Pemrograman  Web  -­‐  State  

Page 11: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Cara  Kerja  Cookie  

11  Pemrograman  Web  -­‐  State  

Sumber:  Robin  Nixon  –  Learning  PHP,  MySQL,  Javascript,  CSS  2nd  Edi@on  

Page 12: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Keamanan  Cookie  (1)  

•  Apakah  cookie  berbahaya?  Pada  dasarnya  @dak.  •  Namun,  cookie  dapat  digunakan  untuk  menyimpan  informasi  tentang  pengguna  tanpa  disadari  oleh  pengguna  tersebut.  (Dengan  kata  lain,  cookie  dapat  digunakan  sebagai  media  untuk  memata-­‐matai  ak@vitas  pengguna,  misalnya  seberapa  sering  pengguna  mengakses,  kapan  waktu  aksesnya,  link  apa  saja  yang  di-­‐klik,  dsb.)  

•  Untuk  alasan  tertentu,  kita  dapat  mengak@_an  atau  me-­‐non-­‐ak@_an  penggunaan  cookie  pada  web  browser  yang  kita  gunakan.  

12  Pemrograman  Web  -­‐  State  

Page 13: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Keamanan  Cookie  (2)  

•  Jika  cookie  ‘terpaksa’  digunakan  untuk  menyimpan  data  yang  bersifat  personal  (misal:  alamat  email,  nomor  telepon,  dsb),  gunakan  enkripsi  untuk  melindungi  data  tersebut  dari  pihak  yang  @dak  berwenang.  

13  Pemrograman  Web  -­‐  State  

Page 14: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

PHP:  Penanganan  Cookie  Cookie  ditangani  dengan  superglobal  array  $_COOKIE  •  Sets  cookies  

 setcookie(name,  [value],  [expire],  [path],  [domain]);      <?php      setcookie("user",  "Alex  Porter",  time()+3600);  ?>    

•  Retrieves  cookies    $_COOKIE["name  of  cookie"];    <?php      if(isset($_COOKIE["user"]))      echo  $_COOKIE["user"];  ?>  

14  Pemrograman  Web  -­‐  State  

Page 15: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Sessions  (1)  

•  Session  merupakan  kombinasi  dari  client-­‐side  session  ID  +  server-­‐side  session  data  

•  Client-­‐side  session  ID  dapat  berupa  parameter  URL,  cookie,  atau  HTTP  request  header.    

•  Cara  yang  paling  umum  adalah  menggunakan  cookie  untuk  menyimpan  client-­‐side  session  ID.    

•  Server-­‐side  session  data  dapat  disimpan  pada  file  maupun  basis  data.  

15  Pemrograman  Web  -­‐  State  

Page 16: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Session  (2)  

•  Session  dapat  digunakan  untuk  menyimpan  data  berukuran  sangat  besar,  sedangkan  cookie  hanya  dapat  menyimpan  data  berukuran  kecil  (karena  dibatasi  oleh  web  browser).  

•  Data  yang  tersimpan  pada  session  sifatnya  sementara.  Data  tersebut  akan  dihapus  dari  server  dalam  kondisi  tertentu,  misalnya  pengguna  menutup  web  browser  atau  session  tersebut  telah  kadaluwarsa.  

16  Pemrograman  Web  -­‐  State  

Page 17: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

PHP:  Penanganan  Session  (1)  •  Memulai  session  <?php  session_start();  ?>    

•  Memberi  nilai  pada  variabel  session  <?php        session_start();      $_SESSION['status']  =  1;  ?>    

•  Membaca  nilai  dari  variabel  session      <?php          session_start();          echo  “Status=“  .  $_SESSION[‘status'];      ?>    

17  Pemrograman  Web  -­‐  State  

Page 18: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

PHP:  Penanganan  Session  (2)  •  Menghapus  sebuah  variabel  session      <?php          session_start();          if(isset($_SESSION['status']))              unset($_SESSION['status']);      ?>    

•  Menghapus  semua  session  pada  pengguna  tertentu      <?php          session_destroy();      ?>    

18  Pemrograman  Web  -­‐  State  

Page 19: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Contoh  Penggunaan  Session  

•  Halaman  login  (Demo)  

19  Pemrograman  Web  -­‐  State  

Cookie/session  theO  

Cookie/session  hijacking  

Page 20: State$ - agipk.lecture.ub.ac.id1.1$=Stateless$ • Salah$satu$sifat$protokol$HTTP$1.1$adalah$ stateless$ • Pada$interaksi$yang$bersifat$stateless, maka$ antara$suatu$interaksi ...

Agi  Putra  Kharisma,  ST.,  MT.  

Tips  Perancangan  State  

•  Sebisa  mungkin  buatlah  aplikasi  web  dengan  cara  stateless,  apabila  terdapat  kebutuhan  yang  mengharuskan  ‘stateful’,  usahakan  untuk  membuat  interaksi  ala  ‘stateful’  yang  sifatnya  sessionless  (tanpa  menggunakan  session),  apabila  @dak  dimungkinkan  atau  karena  ada  alasan  lain  yang  cukup  kuat  untuk  menggunakan  session,  maka  gunakanlah  session.  

20  Pemrograman  Web  -­‐  State