Cara Membuat Form Login Aman dari SQL Injection
SQL Injection adalah sebuah tindakan kejahatan cyber atau internet dimana cara kerja kejahatan ini adalah dengan memanfaatkan kelemahan situs yang terintegrasi dengan database sehingga bisa dimanfaatkan untuk memanipulasi database atau bahkan lebih parah lagi bisa mencuri dan mengatur semua isi dari situs tersebut.
SQL Injection bisa saja dilakukan di situs yang kita buat, karena tanpa kita sadari dari script yang kita anggap sudah aman ternyata masih ada kelemahannya, contohnya seperti di form login dimana jika kita menggunakan script sederhana yang tersebar di Google, sudah pasti situs kamu tidak aman dari SQL Injection, sehingga kamu perlu mengubah atau menambahkan beberapa script agar situs kamu menjadi aman, berikut tutorialnya.
Langkah:
1. Kamu buat terlebih dahulu form login sederhana menggunakan HTML, atau bisa mengikuti contoh di bawah ini.
<title>Login anti SQL Injection</title> <form method="post" action="actlogin.php"> <label>Username</label><br/> <input type="text" name="username" placeholder="Your Username" required/><br/><br/> <label>Username</label><br/> <input type="password" name="password" placeholder="Your Password" required/><br/><br/> <input type="submit" value="submit"/> </form>
2. Karena action dari kode di atas mengarah ke actlogin.php, kamu buat file actlogin.php dengan script di bawah ini.
<?php $koneksi=mysqli_connect("localhost","my_user","my_password","my_db"); // VARIABEL ini akan memastikan bahwa inputan user tidak mengandung ciri ciri tindakan SQL Injection $username = mysqli_real_escape_string($koneksi, $_POST['username']); $password = mysqli_real_escape_string($koneksi, $_POST['password']); $cekLogin = mysqli_query($koneksi,"SELECT * FROM user WHERE username='$username'"); if(mysqli_num_rows($cekLogin) == 1) { $dataLogin = mysqli_fetch_array($cekLogin); if($dataLogin['password'] == $password) { // SCRIPT UNTUK SUKSES LOGIN } else { // SCRIPT UNTUK GAGAL LOGIN } } else { // SCRIPT UNTUK GAGAL LOGIN } ?>
3. Pastikan kamu sudah memiliki database user yang setidaknya terdiri dari username dan password dan sudah mengaturnya di script di atas.
4. Kamu bisa menambahkan sendiri script untuk user berhasil dan gagal login di atas.
5. Selesai.
Penjelasan
Dari script yang diberikan pada tahap kedua, sudah dijelaskan dalam bentuk komentar bahwa variabel $username dan $password sudah diatur agar tidak dapat menerima teks yang mengandung tindakan SQL Injection, otak utama dari pencegahan itu terdapat di fungsi mysqli_real_escape_string() dimana fungsi mysql ini bertugas untuk mengecek apakah teks yang dimasukkan user mengandung teks yang dilarang atau tidak.
Catatan: Pada artikel ini penulis hanya memberikan topik utama dari pencegahan SQL Injection, jika kamu tidak tahu bagaimana cara membuat database atau semacamnya, kamu bisa melihat artikel tersebut di inwepo.