SQL Injection adalah teknik serangan keamanan yang memungkinkan penyerang menyisipkan kode SQL berbahaya ke dalam perintah SQL yang dieksekusi oleh aplikasi. Serangan ini dapat menyebabkan akses ilegal ke basis data, pemindahan atau penghapusan data, atau bahkan eksekusi perintah berbahaya lainnya.
Cara pertama adalah dengan menggunakan Prepared Statements untuk mencegah SQL Injection
<?php // Koneksi ke database $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; $conn = new mysqli($servername, $username, $password, $dbname); // Periksa koneksi if ($conn->connect_error) { die("Koneksi gagal: " . $conn->connect_error); } // Prepared statement $stmt = $conn->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username); // Set parameter dan eksekusi statement $username = $_POST['username']; $stmt->execute(); // Ambil hasil $result = $stmt->get_result(); // Tampilkan data while ($row = $result->fetch_assoc()) { echo "ID: " . $row["id"] . " - Username: " . $row["username"] . "<br\>"; } // Tutup statement dan koneksi $stmt->close(); $conn->close(); ?>
Cara kedua dengan membuat fungsi PHP untuk mengecek Login Username dan Password
<?php function checkLogin($username, $password) { // Konfigurasi database (sesuaikan dengan database Anda) $host = 'localhost'; $dbname = 'nama_database'; $dbuser = 'user_database'; $dbpass = 'password_database'; // Membuat koneksi PDO $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $dbuser, $dbpass); // Menyiapkan prepared statement untuk menghindari SQL injection $stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password"); // Melakukan binding parameter $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); // Menjalankan query $stmt->execute(); // Mengambil hasil query $user = $stmt->fetch(PDO::FETCH_ASSOC); // Menutup koneksi $stmt = null; $pdo = null; // Memeriksa apakah pengguna ditemukan if ($user) { return $user; // Pengguna ditemukan } else { return false; // Pengguna tidak ditemukan } } // Contoh penggunaan fungsi $username = $_POST['username']; $password = $_POST['password']; // Password harus di-hash terlebih dahulu $user = checkLogin($username, $password); if ($user) { echo 'Login berhasil!'; // Set session atau cookie di sini } else { echo 'Username atau password salah!'; } ?>
Catatan penting:
- Pastikan Anda menggunakan hashing untuk password sebelum menyimpannya di database.
- Jangan lupa untuk menyesuaikan variabel $host, $dbname, $dbuser, dan $dbpass dengan konfigurasi database Anda.
- Fungsi checkLogin ini hanya contoh dan mungkin perlu disesuaikan lebih lanjut sesuai dengan kebutuhan aplikasi Anda.
Gunakan metode ini sebagai bagian dari praktik keamanan yang baik untuk melindungi aplikasi Anda dari serangan SQL injection.
0 komentar:
Posting Komentar