Tutorial PHP Dasar #12:  php security  (sql injection & hashing)
Php 10 Feb 2025 4 min read

Tutorial PHP Dasar #12: php security (sql injection & hashing)

Erick Iwansyah
Erick Iwansyah
Author
38 views

Halo lagi! Kali ini kita akan bahas tentang keamanan di PHP, yang penting banget buat melindungi aplikasi web kita dari ancaman seperti SQL Injection dan mengelola password hashing. Dua hal ini harus dikuasai agar aplikasi kita tetap aman, apalagi jika aplikasi kita menyimpan data pengguna sensitif seperti password.


Apa Itu SQL Injection?

SQL Injection adalah teknik yang digunakan oleh hacker untuk menyisipkan query SQL yang berbahaya ke dalam input form, dengan tujuan mengakses atau merusak data di database. Misalnya, jika aplikasi kita tidak memvalidasi input pengguna dengan baik, hacker bisa menyisipkan kode SQL seperti ini:

' OR '1'='1

Ini akan membuat query SQL yang seharusnya hanya menampilkan data pengguna yang valid menjadi terbuka untuk siapa saja.


Mencegah SQL Injection dengan Prepared Statements

Cara terbaik untuk mencegah SQL Injection adalah dengan menggunakan prepared statements. Di PHP, kita bisa menggunakan mysqli atau PDO untuk membuat prepared statement.

Contoh Menggunakan Prepared Statement dengan mysqli:

prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password); // "ss" berarti dua parameter string

// Eksekusi query
$stmt->execute();

// Ambil hasil
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    echo "Login berhasil!";
} else {
    echo "Login gagal, username atau password salah.";
}

$stmt->close();
$conn->close();
?>

Di sini, kita mengikatkan parameter ke query dengan bind_param(), yang mencegah input pengguna dimasukkan langsung ke dalam query, sehingga mencegah SQL Injection.


Menggunakan Password Hashing

Penting banget untuk tidak menyimpan password pengguna dalam bentuk teks biasa. Alih-alih, kita harus hashing password tersebut menggunakan algoritma hash yang kuat, seperti bcrypt. Dengan begitu, meskipun database kita terkompromi, password asli tetap tidak bisa diketahui.

Di PHP, kita bisa menggunakan fungsi password_hash() untuk membuat hash password dan password_verify() untuk memverifikasi password.

Contoh Menggunakan Password Hashing:

1. Menyimpan Password dengan Hashing:

query($sql) === TRUE) {
        echo "Pengguna berhasil ditambahkan!";
    } else {
        echo "Error: " . $conn->error;
    }
}
?>

2. Memverifikasi Password saat Login:

query($sql);

    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        $hashed_password = $row['password'];

        // Verifikasi password
        if (password_verify($password, $hashed_password)) {
            echo "Login berhasil!";
        } else {
            echo "Password salah!";
        }
    } else {
        echo "Username tidak ditemukan!";
    }
}
?>

Dengan cara ini, meskipun database kita terkompromi, password asli tidak akan bisa diketahui karena hanya hash yang tersimpan di database.


Studi Kasus: Sistem Login dengan Keamanan

Buatlah dokumen baru php baru, lalu buatlah form seperti berikut:

Form Login dengan Keamanan:





Proses Login dengan Keamanan:

prepare("SELECT password FROM users WHERE username = ?");
    $stmt->bind_param("s", $username);
    $stmt->execute();

    $result = $stmt->get_result();

    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        $hashed_password = $row['password'];

        // Memverifikasi password
        if (password_verify($password, $hashed_password)) {
            echo "Login berhasil!";
        } else {
            echo "Password salah!";
        }
    } else {
        echo "Username tidak ditemukan!";
    }

    $stmt->close();
    $conn->close();
}
?>

Apa Selanjutnya?
Sekarang, kamu sudah tahu cara mencegah SQL Injection dan cara mengelola password dengan aman menggunakan hashing. Selanjutnya, kita akan belajar tentang upload file dengan PHP, yang sangat berguna untuk fitur seperti meng-upload foto profil atau dokumen.


Sekianlah belajar PHP tentang keamanan dan hashing password. Dengan memahami keamanan, aplikasi kamu bisa lebih aman dari ancaman eksternal. Artikel ini sangat berguna sebelum kamu melanjutkan ke tutorial PHP selanjutnya di www.code80vity.com. Sampai jumpa di pembahasan berikutnya, dan jangan lupa terus eksplorasi PHP!

Tutorial Terkait

Php 6 months ago

Tutorial PHP Dasar #13: Upload File dengan PHP

Hai! Di tutorial kali ini kita akan belajar bagaimana cara meng-upload file menggunakan PHP. Fitur u...

Php 6 months ago

Tutorial PHP Dasar #11: CRUD dengan PHP dan MySQL

Halo! Kita sudah sampai di bagian yang lebih seru nih, yaitu CRUD: Create, Read, Update, dan Delete...

Php 6 months ago

Tutorial PHP Dasar #10: Session dan Cookie di PHP

Halo! Kamu udah sampai di bagian yang makin seru nih. Kali ini, kita bakal bahas tentang session dan...

Comments

Login to leave a comment.

Loading comments...

Siap Mengembangkan Project IT Anda?

Konsultasi gratis untuk membahas kebutuhan software dan solusi IT bisnis Anda