BAB 12: Formulir Validasi & Keamanan Dasar – Melindungi Aplikasi PHP Anda

BAB 12: Formulir Validasi & Keamanan Dasar – Melindungi Aplikasi PHP Anda

Validasi dan keamanan adalah aspek penting dalam pengembangan web. Tanpa proteksi yang tepat, aplikasi PHP rentan terhadap SQL Injection, XSS, dan pencurian data. Di bab ini, kita akan belajar cara memvalidasi input pengguna dan mengamankan data.


Validasi Data

Sebelum memproses input pengguna, selalu lakukan validasi. Beberapa validasi dasar:

1. Cek apakah kosong

<?php
$nama = $_POST['nama'] ?? '';
if(empty($nama)) {
    echo "Nama tidak boleh kosong!";
}
?>

2. Format email

<?php
$email = $_POST['email'] ?? '';
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Email tidak valid!";
}
?>

3. Cek angka

<?php
$umur = $_POST['umur'] ?? '';
if(!is_numeric($umur)) {
    echo "Harus berupa angka!";
}
?>

Proteksi SQL Injection

SQL Injection terjadi jika input pengguna langsung digunakan dalam query SQL. Gunakan mysqli_real_escape_string atau prepared statement:

<?php
$conn = mysqli_connect("localhost", "root", "", "db_test");
$nama = mysqli_real_escape_string($conn, $_POST['nama']);
$query = "SELECT * FROM users WHERE nama='$nama'";
$result = mysqli_query($conn, $query);
?>

Cara lebih aman: gunakan prepared statements untuk mencegah SQL Injection sepenuhnya.


Proteksi XSS (Cross-Site Scripting)

XSS terjadi jika pengguna memasukkan script berbahaya. Gunakan htmlspecialchars() untuk membersihkan input:

<?php
$komentar = $_POST['komentar'] ?? '';
$komentar = htmlspecialchars($komentar);
echo $komentar;
?>
  • Mengubah karakter <, >, " menjadi entitas HTML.
  • Mencegah eksekusi kode JavaScript berbahaya di browser pengguna.

Password Hashing

Jangan pernah menyimpan password secara plain text. Gunakan fungsi password_hash() dan password_verify().

1. Hash password

<?php
$password = "123456";
$hash = password_hash($password, PASSWORD_DEFAULT);
echo $hash;
?>

2. Verifikasi password

<?php
$input = "123456";
if(password_verify($input, $hash)) {
    echo "Password benar!";
} else {
    echo "Password salah!";
}
?>

Dengan hashing, bahkan jika database bocor, password pengguna tetap aman.


Dengan validasi dan proteksi dasar ini, aplikasi PHP Anda akan lebih aman, stabil, dan terpercaya, mengurangi risiko serangan dari pengguna jahat.