Pertemuan 7: Validasi Form dan Keamanan Dasar

Mata Kuliah: Aplikasi Web (TW2). Durasi: 120 menit (Tatap Muka). Target: Mahasiswa semester 2.

Tujuan Pembelajaran

  • Menerapkan validasi di sisi klien dan server
  • Membersihkan input sebelum diproses
  • Mengenali ancaman SQL Injection dan XSS
  • Menulis kode yang tahan dari serangan umum

Capaian Pembelajaran

Mahasiswa mampu menerapkan validasi dan sanitasi data serta mencegah serangan SQL Injection dan XSS pada kode yang ditulisnya.

Konsep Materi

Untuk melihat pentingnya validasi, cobalah mengirim form dengan isian yang tidak wajar, misalnya huruf pada kolom angka atau email tanpa tanda pager. Tanpa validasi, data buruk akan tersimpan dan mengganggu proses lain, seperti perhitungan atau pencarian. Dengan validasi, aplikasi menolak data tersebut sejak awal dan memberi tahu pengguna apa yang perlu diperbaiki, sehingga kualitas data di dalam database tetap terjaga.

Selain mencegah serangan, validasi yang baik juga memperbaiki pengalaman pengguna secara umum. Pesan kesalahan yang jelas dan mengarahkan, dengan menandai kolom yang bermasalah, membuat pengguna merasa dibantu alih-alih frustrasi. Menampilkan kembali nilai yang sudah diisi agar tidak mengetik ulang juga merupakan perhatian yang dihargai. Sebuah aplikasi yang validasinya nyaman justru dinilai profesional meskipun secara teknis sederhana.

Ancaman SQL Injection pada dasarnya memanfaatkan kepercayaan terhadap input pengguna. Bila kueri disusun dengan menggabungkan string dan langsung menerima nilai dari pengguna tanpa pemisahan, penyerang dapat mengubah makna kueri. Menggunakan prepared statement memisahkan struktur kueri dari nilai yang diberikan, sehingga simbol khusus pada input tidak lagi dianggap sebagai bagian perintah. Cara ini menjadi pertahanan utama yang paling dianjurkan.

Menjaga keamanan bukan tugas sekali jadi, melainkan kebiasaan berkelanjutan. Setiap kali membangun fitur baru yang menerima input, pengembang harus selalu teringat tiga langkah: memvalidasi agar data benar, membersihkan agar data aman disimpan, dan menyandikan agar data aman ditampilkan. Dengan rutinitas sederhana ini, sebagian besar kerentanan umum dapat dicegah sejak awal tanpa perlu perombakan besar.

Agar pemahaman lebih mantap, mahasiswa diajak berlatih mengubah sebuah kode yang rawan menjadi kode yang aman langkah demi langkah. Proses ini melatih ketelitian dalam menemukan titik yang perlu diperkuat: dari input yang diterima, cara nilai diproses, hingga cara hasil ditampilkan. Pengalaman merombak kode yang berbahaya menjadi aman memberi rasa percaya diri sekaligus wawasan betapa tipisnya batas antara kode yang aman dan yang rentan.

Validasi form adalah pemeriksaan data yang dimasukkan pengguna sebelum benar-benar disimpan atau diproses. Tujuannya memastikan data benar, lengkap, dan sesuai format sehingga aplikasi tidak diisi data rusak. Validasi dibagi menjadi dua lapis. Validasi sisi klien berjalan di browser menggunakan JavaScript untuk memberi umpan balik cepat, sedangkan validasi sisi server berjalan di PHP dan menjadi garis pertahanan terakhir yang wajib selalu diterapkan, karena data dari klien tidak dapat dipercaya sepenuhnya.

Aturan validasi umum meliputi kolom wajib terisi, email harus memiliki format benar, angka berada pada kisaran tertentu, dan panjang teks dibatasi. Di sisi server, hasil pemeriksaan disimpan dalam kumpulan kesalahan, lalu formulir ditampilkan ulang dengan pesan tersebut bila ditemukan kesalahan. Nilai yang dikirim juga harus dibersihkan sebelum dipakai agar tidak membahayakan database maupun tampilan. Proses pembersihan ini dikenal sebagai sanitasi.

Keamanan dasar menyangkut perlindungan dari ancaman yang umum. SQL Injection terjadi ketika penyerang menyisipkan bagian kueri berbahaya ke dalam input yang digabungkan langsung ke perintah SQL, sehingga dapat mencuri atau merusak data. Cara terbaik menanggulanginya adalah dengan prepared statement. Cross-Site Scripting (XSS) memasukkan skrip jahat ke halaman yang kemudian dieksekusi browser pengguna lain; pencegahannya dengan menyandikan keluaran sehingga skrip tidak aktif.

Di samping itu, sesi yang dibajak dapat dihindari dengan memberi batas waktu kedaluwarsa dan memulai sesi baru setelah login. Pengaturan hak akses yang berkaitan dengan otorisasi turut menutup celah penting. Membangun kesadaran keamanan sejak dini menjadikan aplikasi tidak hanya berfungsi, tetapi juga aman digunakan oleh banyak pengguna.

Langkah Praktik

  1. Tambahkan validasi klien berupa atribut wajib dan pola pada input.
  2. Tulis validasi server yang memeriksa kelengkapan dan format email.
  3. Gunakan fungsi sanitasi pada setiap input sebelum disimpan.
  4. Ganti penggabungan kueri langsung dengan prepared statement.
  5. Tampilkan pesan kesalahan pada formulir dan bersihkan keluaran dengan fungsi penyandian.

Validasi sisi server (contoh)

<?php
$errors = [];
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $nama  = trim($_POST['nama']);
  $email = trim($_POST['email']);
  if ($nama === '') { $errors[] = 'Nama wajib diisi'; }
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $errors[] = 'Format email tidak valid';
  }
}
?>

Latihan / Proyek

  • Tambahkan aturan panjang minimal pada kata sandi di kedua sisi validasi
  • Pastikan dua kolom kata sandi harus cocok
  • Uji formulir dengan data kosong dan email salah
  • Coba penyisipan kueri dan amati dampaknya sebelum dan sesudah prepared statement
  • Tampilkan setiap nilai dengan fungsi penyandian untuk menghindari XSS

Rekap & Tindak Lanjut

Mahasiswa memahami pentingnya validasi di kedua sisi, membersihkan dan menyandikan input, serta mencegah SQL Injection dan XSS. Kebiasaan menulis kode aman ini melekat pada seluruh pengembangan selanjutnya.

No Comment! Be the first one.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *