Jika Sang Khalik menghendaki, maka semua manusia akan memiliki warna kulit yang sama, agama yang hanya satu, tidak ada yang namanya negara, suku bangsa dan tidak ada perbedaan. Artinya Sang Khalik memang menghendaki adanya perbedaan. Perbedaan adalah hakekat penciptaan. Perbedaan itu indah.

Membuat Aplikasi PHP Yang Aman Bag. 2

Dikirim: September 2nd, 2006 | Oleh: | Kategori: PHP | 21 Komentar »

Sambungan dari:
Membuat Aplikasi PHP Yang Aman Bag. 1

2. Pergunakan Anti SQL Injection

SQL Injection merupakan teknik menyusupkan perintah SQL kedalam query dengan cara memanipulasi input data pada sebuah aplikasi. Anda bisa membaca dan mempelajari bagaimana SQL injection dapat terjadi di SQL Injetion Attack by Example.

Bagaimana menanggulanginya? Berikut adalah fungsi Anti SQL Injection yang sering saya pergunakan.

  1. function anti_sql_injection( $input ) {  
  2.     // daftarkan perintah-perintah SQL yang tidak boleh ada
  3.     // dalam query dimana SQL Injection mungkin dilakukan
  4.     $aforbidden = array (
  5.     "insert", "select", "update", "delete", "truncate",
  6.     "replace", "drop", " or ", ";", "#", "--", "=" );
  7.  
  8.     // lakukan cek, input tidak mengandung perintah yang tidak boleh
  9.     $breturn=true;  
  10.     foreach($aforbidden as $cforbidden) {
  11.         if(strripos($input, $cforbidden)) {
  12.             $breturn=false;
  13.             break;  
  14.         }    
  15.     }
  16.     return $breturn;
  17. }

Cara memanfaatkan fungsi tersebut adalah sebagai berikut (contoh pada proses login dimana SQL injection kerap dilakukan)

  1. if(anti_sql_injection($_POST['user']) and
  2.    anti_sql_injection($_POST['password'])) {
  3.     // lakukan proses login
  4. } else {
  5.    die();
  6. }

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.

3. 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.

  1. session_start();
  2. if($_SESSION['id_user']<>13) {
  3.    // Proses login (authentifikasi)
  4.    // Jika login sukses, jalankan perintah dibawah ini
  5.    $_SESSION['id_user']=13;
  6. } else {
  7.   if($_SESSION['id_user']==13) {
  8.       // lakukan proses A
  9. }

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:

  1. session_start();
  2. if($_SESSION['id_user']<>13) {
  3.    // Proses login (authentifikasi)
  4.    // Jika login sukses, jalankan perintah dibawah ini
  5.    session_regenerate_id();
  6.    $_SESSION['id_user']=13;
  7. } else {
  8.   if($_SESSION['id_user']==13) {
  9.       // lakukan proses A
  10. }

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.


21 komentar untuk “Membuat Aplikasi PHP Yang Aman Bag. 2”

  1. 1
    Catatan » Membuat Aplikasi PHP Yang Aman Bag. 1
    berkomentar pada jam 10:57 am
    tanggal 2 September 2006

    […] Bersambung ke Membuat Aplikasi PHP Yang Aman Bag. 2 […]

  2. 2
    Meda
    berkomentar pada jam 5:17 pm
    tanggal 11 September 2006

    Hi Riyo!

    Aku alumni BPI 1 angkatan 88, cuma suer, aku ngga ngeh kamu tuh yang mana .. hehehe. sorry. aku sempet liat website reuni, dah lewat ya? sayang banget … kalo kumpulan2 alumni BPI1 angkatan 88 ini ada websitenya ngga?

    thanks!

  3. 3
    nur
    berkomentar pada jam 4:21 pm
    tanggal 12 December 2006

    bagaikjkjjgf

  4. 4
    doez
    berkomentar pada jam 8:14 am
    tanggal 15 April 2008

    thank’s

  5. 5
    nix
    berkomentar pada jam 12:21 pm
    tanggal 10 December 2008

    tutorial yg bagus mas :)

  6. 6
    brewokkeren
    berkomentar pada jam 10:45 am
    tanggal 3 March 2009

    kalau bisa dikasih menu download mas untuk artikel yang bagus ini

  7. 7
    Tommy
    berkomentar pada jam 12:46 am
    tanggal 27 January 2010

    boleh di coba nih
    .-= Tommy´s last blog ..Pelayanan Terbaik Telkom Speedy ? =-.

  8. 8
    Muhamad Erros
    berkomentar pada jam 3:14 pm
    tanggal 19 February 2010

    Terima Kasih Atas tutorialnya sangat berguna. salam kenal

  9. 9
    zaini lupus gitulohh..??
    berkomentar pada jam 7:33 pm
    tanggal 13 November 2010

    bagai mana nih cra pnggunaan php ,bedanya php dan html
    ksh tau yaa…

    Trimakasihhh,,..

  10. 10
    Fia
    berkomentar pada jam 6:23 pm
    tanggal 10 December 2010

    nice tutor…..

  11. 11
    Zico
    berkomentar pada jam 9:34 pm
    tanggal 11 December 2010

    nice tutor my brother

  12. 12
    Klopototolia TJ
    berkomentar pada jam 10:53 pm
    tanggal 2 May 2011

    thanks mas artikelnya sangat jelas dan mudah d mengeti, sekali lagi terimah kasih,…

    Salam

  13. 13
    jasa pembuatan website dan aplikasi php
    berkomentar pada jam 3:34 pm
    tanggal 25 June 2011

    artikelnya keren mas..
    kunjungi juga blog saya ya

    jasa pembuatan website dan aplikasi php

  14. 14
    willy
    berkomentar pada jam 11:02 am
    tanggal 3 January 2012

    nice, lihat juga artikel aq
    cara mengatasi asma

  15. 15
    obat mujarab
    berkomentar pada jam 7:30 am
    tanggal 21 May 2013

    waw artikel yang kren :D

  16. 16
    alat drumband
    berkomentar pada jam 7:18 pm
    tanggal 21 May 2014

    Terima kasih atas tutorialnya, saya jadi mengerti kekurangan dan kelebihan sessions di php

  17. 17
    jerry
    berkomentar pada jam 8:35 pm
    tanggal 20 November 2014

    .

    ñýíêñ çà èíôó.

  18. 18
    Gene
    berkomentar pada jam 2:57 pm
    tanggal 23 November 2014

    .

    tnx!

  19. 19
    Bernard
    berkomentar pada jam 10:31 pm
    tanggal 25 November 2014

    .

    ñïàñèáî çà èíôó!!

  20. 20
    Jual Marchingband
    berkomentar pada jam 11:45 am
    tanggal 21 October 2016

    Terimakasih informasinya mengenai membuat aplikasi PHP yang aman. sangat bagus sekali

  21. 21
    Alat pemotong tempe
    berkomentar pada jam 11:36 pm
    tanggal 8 November 2016

    Bisa dicoba untuk dipraktek kan
    Alat pemotong tempe


Isi Komentar