Membuat website yang berfungsi dengan baik itu penting, tapi membuat website yang aman adalah kewajiban. Di MHFSDEV, kami sering melihat pemula mengabaikan keamanan demi mengejar fitur cepat jadi.
Salah satu celah keamanan paling berbahaya adalah SQL Injection. Dengan teknik ini, hacker bisa menghapus, mencuri, bahkan mengubah seluruh data di database Anda hanya melalui kotak input form. Mari kita pelajari cara mencegahnya.
Apa itu SQL Injection?
SQL Injection terjadi ketika karakter berbahaya (seperti tanda petik tunggal) dimasukkan ke dalam form input, yang kemudian mengubah perintah SQL asli di server Anda.
Contoh Query yang Berbahaya:
$sql = "SELECT * FROM users WHERE username = '$username'";
Jika hacker mengetikkan ' OR '1'='1 di kolom username, mereka bisa login tanpa password!
Cara Mencegahnya: Menggunakan Prepared Statements
Metode paling ampuh untuk mencegah SQL Injection adalah dengan Prepared Statements. Dengan metode ini, data dipisahkan dari query SQL, sehingga karakter berbahaya tidak akan dieksekusi sebagai perintah.
1. Menggunakan MySQLi (Objek-Oriented)
Gunakan fungsi prepare() dan bind_param() daripada memasukkan variabel langsung ke dalam string query.
// Contoh pengamanan input login
$stmt = $koneksi->prepare("SELECT password FROM users WHERE email = ?");
$stmt->bind_param("s", $email); // "s" berarti tipe data string
$stmt->execute();
$result = $stmt->get_result();
2. Menggunakan PDO (PHP Data Objects)
PDO adalah cara yang lebih modern dan mendukung berbagai jenis database (tidak hanya MySQL).
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :name');
$stmt->execute(['name' => $username]);
$user = $stmt->fetch();
Tips Keamanan Tambahan
- Validasi Input: Selalu cek apakah email benar-benar format email menggunakan
filter_var(). - Gunakan Password Hashing: Jangan pernah simpan password dalam bentuk teks biasa. Gunakan
password_hash(). - Batasi Hak Akses Database: Gunakan user database yang hanya punya akses ke tabel tertentu, jangan gunakan user 'root' untuk aplikasi publik.
Kesimpulan
Keamanan bukan sebuah fitur, melainkan pondasi. Mulai sekarang, biasakan menggunakan Prepared Statements setiap kali Anda berurusan dengan input dari pengguna di MHFSDEV.
Sudahkah website Anda aman? Coba cek kembali kodingan Anda hari ini! Besok di Hari ke-11, kita akan membahas tips optimasi query database agar loading website Anda makin ngebut.
0 Comments