eamanan adalah hal penting dalam pengembangan website, terutama saat menangani input dari pengguna. Tanpa perlindungan yang baik, website bisa rentan terhadap serangan seperti SQL Injection dan Cross Site Scripting (XSS).
Pada tutorial ini, kamu akan belajar cara mengamankan form input menggunakan PHP sekaligus melakukan redirect setelah data berhasil disimpan.
Apa Itu SQL Injection dan XSS
SQL Injection adalah teknik serangan yang memanfaatkan celah pada query database. Penyerang bisa menyisipkan perintah SQL berbahaya melalui input form.
Sedangkan XSS adalah serangan yang menyisipkan script berbahaya ke dalam halaman web yang kemudian dijalankan di browser pengguna lain.
Pentingnya Validasi dan Sanitasi Data
Untuk mencegah serangan tersebut, kamu perlu melakukan dua hal:
- Validasi data (memastikan input sesuai aturan)
- Sanitasi data (membersihkan input dari karakter berbahaya)
Contoh Implementasi PHP Aman
Berikut contoh kode form yang sudah dilengkapi dengan sanitasi input:
<?php
if (isset($_POST['submit'])) {
// Menghilangkan spasi dari nama dan alamat
$nama = trim($_POST['nama']);
$alamat = trim($_POST['alamat']);
// Mencegah XSS
$nama = strip_tags($nama);
$alamat = strip_tags($alamat);
$nama = htmlentities($nama);
$alamat = htmlentities($alamat);
// Mendapatkan ID user dari form
$id = $_POST['id'];
// Koneksi ke database
$conn = mysqli_connect("localhost", "username", "password", "database");
// Query untuk menyimpan data ke database
$sql = "UPDATE users SET nama='$nama', alamat='$alamat' WHERE id=$id";
mysqli_query($conn, $sql);
// Redirect ke halaman edit dengan ID user
header("Location: edit.php?id=$id");
exit;
}
?>
Membuat Form Input
Berikut form HTML yang digunakan:
<form action="" method="post">
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input type="text" name="nama" value="<?php echo $nama; ?>">
<input type="text" name="alamat" value="<?php echo $alamat; ?>">
<input type="submit" name="submit" value="Simpan">
</form>
Penjelasan Kode
- trim() digunakan untuk menghapus spasi berlebih
- strip_tags() menghapus tag HTML berbahaya
- htmlentities() mengubah karakter menjadi entitas aman
- mysqli_query() menjalankan query ke database
- header() digunakan untuk redirect
Catatan Penting Keamanan
Meskipun contoh di atas sudah cukup aman untuk dasar, ada beberapa hal yang wajib kamu tingkatkan:
- Gunakan prepared statement (mysqli atau PDO) untuk mencegah SQL Injection secara maksimal
- Validasi tipe data, terutama untuk ID
- Hindari langsung memasukkan variabel ke query
- Gunakan filter tambahan jika diperlukan
Contoh Lebih Aman (Rekomendasi)
Gunakan prepared statement seperti ini:
$stmt = $conn->prepare("UPDATE users SET nama=?, alamat=? WHERE id=?");
$stmt->bind_param("ssi", $nama, $alamat, $id);
$stmt->execute();
Kesimpulan
Mengamankan form input adalah langkah wajib dalam pengembangan website modern.
Dengan melakukan sanitasi dan validasi data, kamu bisa mencegah serangan seperti SQL Injection dan XSS.
Untuk hasil yang lebih aman, sangat disarankan menggunakan prepared statement agar query database tidak mudah disusupi.
Teknik ini wajib kamu terapkan terutama jika kamu mengembangkan website dengan sistem login, input data, atau portal berita dengan banyak pengguna.
Kalau kamu mau, nanti kita bisa lanjut ke pembahasan keamanan lanjutan seperti CSRF protection dan authentication system.