Robby Cokro Buwono Badiyanto, S.Kom., M.Kom Sesi 5 Form Tujuan Intruksional Mampu membuat form dan dan mengirim data ke halaman lain Pengaturan Validasi dan keamanan form Kode MK : AK2011T Revisi Terakhir : 2015 2 HTML Form Form pada HTML merupakan alat untuk memperoleh sejumlah informasi yang dilewatkan user menuju server Script HTML Form : <form name= nama_form action= url method= post / get >. Elemen form. </form> GET GET merupakan metode pengiriman data yang ditampilkan dalam URL Contoh: File form.html <form action= hasil.php method= get > Pengguna : <input type= text name= pengguna /> <input type= submit value= Submit /> </form> 1
GET File Hasil.php <?php echo $_GET[ pengguna ];?> POST POST merupakan metode pengiriman data ke server secara terpisah dengan URL Contoh: File form.html <form action= hasil.php method= post > Pengguna : <input type= text name= pengguna /> <input type= submit value= Submit /> </form> POST File Hasil.php <?php echo $_POST[ pengguna ];?> Perbandingan POST dan GET POST Nilai variabel tidak ditampilkan di URL Lebih aman GET Nilai variabel ditampilkan di URL sehingga user dapat dengan mudah memasukkan nilai variabel baru Kurang aman Tidak dibatasi panjang string Dibatasi panjang string sampai 2047 karakter Pengambilan variabel dengan $_POST Pengambilan variabel dengan $_GET Biasanya untuk input data melalui form Biasanya untuk input data melalui link Digunakan untuk mengirim data-data penting seperti password Digunakan untuk mengirim data-data tidak penting 8 2
Validasi Form Proses dalam PHP dengan keamanan melindungi Anda dari bentuk hacker Bentuk HTML menyediakan berbagai bidang masukan: field opsional teks, tombol radio, tombol submit: Kode HTML formulir terlihat seperti ini: <form method="post" action="<?php echo htmlspecialchars($_server["php_self"]);?>"> Ketika formulir dikirimkan, dengan metode = "post". Apa variabel $ _SERVER ["PHP_SELF"]? $ _SERVER ["PHP_SELF"] adalah variabel yang super global yang mengembalikan nama file dari script saat mengeksekusi Jadi, $ _SERVER ["PHP_SELF"] mengirimkan data formulir diserahkan ke halaman itu sendiri, bukannya melompat ke halaman yang berbeda. Dengan cara ini, pengguna akan mendapatkan pesan error pada halaman yang sama seperti formulir. 9 10 Apa fungsi htmlspecialchars ()? fungsi htmlspecialchars () mengkonversi karakter khusus untuk entitas HTML. Ini berarti bahwa itu akan menggantikan karakter HTML seperti <and> dengan & lt; dan & gt;. Hal ini mencegah penyerang dari mengeksploitasi kode dengan menyuntikkan HTML atau kode Javascript (serangan Scripting Cross-site) dalam form. Variabel $ _SERVER ["PHP_SELF"] dapat digunakan oleh hacker! Jika PHP_SELF digunakan dalam halaman Anda maka pengguna dapat memasukkan sebuah garis miring (/) dan kemudian beberapa Cross Site Scripting (XSS) perintah untuk mengeksekusi. Catatan: Cross-site scripting (XSS) adalah jenis kerentanan keamanan komputer biasanya ditemukan dalam aplikasi Web. XSS memungkinkan penyerang untuk menginjeksi script sisi klien ke halaman Web yang terlihat oleh pengguna lain. 11 12 3
Kasus Asumsikan kita memiliki bentuk berikut di halaman bernama "test_form.php": <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>"> Sekarang, jika pengguna memasukkan URL yang normal di address bar seperti "http://www.example.com/test_form.php", kode di atas akan diterjemahkan ke: <form method="post" action="test_form.php"> Sejauh ini bagus. Namun, mempertimbangkan bahwa pengguna memasukkan URL berikut di address bar: Kasus http://www.example.com/test_form.php/%22%3e%3cscript%3ealert('hacked')%3c/script%3e Dalam hal ini, kode di atas akan diterjemahkan ke: <form method="post" action="test_form.php/"><script>alert('hacked')</script> Kode ini menambahkan tag script dan perintah peringatan. Dan ketika beban halaman, kode JavaScript akan dieksekusi (pengguna akan melihat kotak peringatan). Ini hanya contoh sederhana dan tidak berbahaya bagaimana variabel PHP_SELF dapat dimanfaatkan. Perlu disadari bahwa kode JavaScript dapat ditambahkan dalam tag <script>! Seorang hacker dapat mengarahkan pengguna ke file di server lain, dan file yang dapat menyimpan kode berbahaya yang dapat mengubah variabel-variabel global atau menyerahkan formulir ke alamat lain untuk menyimpan data pengguna, misalnya. 13 14 Cara Hindari Eksploitasi $ _SERVER ["PHP_SELF"]? $ _SERVER ["PHP_SELF"] eksploitasi dapat dihindari dengan menggunakan fungsi htmlspecialchars(). Kode bentuk akan terlihat seperti ini: <form method="post" action="<?php echo htmlspecialchars($_server["php_self"]);?>"> Cara Hindari Eksploitasi $ _SERVER ["PHP_SELF"]? fungsi htmlspecialchars () mengkonversi karakter khusus untuk entitas HTML. Sekarang jika pengguna mencoba untuk mengeksploitasi variabel PHP_SELF, itu akan menghasilkan output sebagai berikut: <form method="post" action="test_form.php/"><script>alert('hacked')</script>"> Upaya mengeksploitasi gagal, dan tidak ada salahnya dilakukan! 15 16 4
Validasi Form Data Dengan PHP Hal pertama yang akan kita lakukan adalah melewatkan semua variabel melalui fungsi htmlspecialchars (). Ketika kita menggunakan fungsi htmlspecialchars(); maka jika pengguna mencoba untuk mengirimkan berikut dalam kolom teks: Validasi Form Data Dengan PHP <script>location.href('http://www.hacked.com')< /script> ini tidak akan dieksekusi, karena itu akan disimpan sebagai HTML melewatkan kode, seperti ini: <script>location.href('http://www.hacked.co m')</script> 17 18 Validasi Form Data Dengan PHP Kode ini sekarang aman untuk ditampilkan pada halaman atau di dalam sebuah e-mail. Juga akan melakukan dua hal lebih ketika pengguna mengirim formulir: Perlewatan karakter yang tidak perlu (tambahan space, tab, baris baru) dari data input pengguna (dengan fungsi trim() ) Hapus backslashes (\) dari data input pengguna (dengan fungsi stripslashes()) Forms - Required Fields Aturan validasi tabel pada halaman sebelumnya, kita melihat bahwa "Nama", "E-mail", dan isian "Gender tidak boleh kosong isian field tidak boleh kosong dan harus diisi. 19 20 5
Aturan Validasi Field Name Validation Rules harus diisi+ dan hanya berisi huruf dan spasi E-mail validasi berisi alamat email yang valid (dengan @ ) Website Comment Gender Jika ada, itu harus berisi URL yang valid Field input multi-line (textarea) Harus pilih salah satu Validasi Form variabel Dalam kode berikut menambahkan beberapa variabel baru: $nameerr, $emailerr, $gendererr, dan $websiteerr. Variabel yang menampilkan kesalahan jika isian kosong Juga menambahkan pernyataan $ _POST. untuk setiap variabel Ini memeriksa apakah variabel $ _POST kosong (dengan fungsi empty(). Jika kosong, pesan kesalahan disimpan dalam variabel kesalahan yang berbeda, dan jika tidak kosong mengirimkan data input pengguna melalui fungsi: test_input () 21 css pesan pemanggilan lewat form keluaran 22 Validasi Referensi PHP 5 Form Handling http://www.w3schools.com/php/php_forms.asp PHP Manual (http://www.php.net/docs.php) 23 24 6