-->

Mencegah SQL Injection dan By Pass Admin di PHP


Kali ini saya akan membahas tentang SQL injection dan By Pass Admin di PHP, tentunya bagi anda yang baru membuat aplikasi web dan berencana untuk mengupload aplikasi anda untuk di onlinekan maka anda perlu memperhatikan beberapa vulnerability (celah) di aplikasi yang anda buat.

Jangan sampai ketika di upload web aplikasi anda mendapatkan serangan SQL Injection dan mudah sekali di by pass admin, tentunya ini sangat merugikan anda, tentunya anda tidak ingin aplikasi anda di rusak oleh hacker script kiddies yang memang sedang gemar gemar nya uji coba ilmu yang di dapat dengan mempraktekkannya secara langsung.

Ada beberapa hal yang bisa anda lakukan untuk mencegah SQL Injection dan mencegah serangan by pass admin ke website anda yaitu adalah

</> menggunakan function mysqli_real_escape_string()
</> membuat password hashing (MD5 / SHA1)
</> menambahkan salt pada password
</> membuat nomor random dengan
</> membuat session check ketika user login

Aplikasi web biasanya yang rentan terhadap by pass admin biasanya tidak menggunakan fungsi mysqli_real_escape_string() jadi untuk mencegah bypass admin di aplikasi web yang sudah anda buat anda bisa, berikut adalah contoh script login yang menggunakan fungsi mysqli_real_escape_string().


<?php
include ("conn.php");
date_default_timezone_set('Asia/Jakarta');

session_start();

$username = $_POST['username'];
$password = sha1($_POST['password']);

$username = mysqli_real_escape_string($koneksi, $username);
$password = mysqli_real_escape_string($koneksi, $password);

if (empty($username) && empty($password)) {
    header('location:index.php?error=Username dan Password Kosong!');
} else if (empty($username)) {
    header('location:index.php?error=Username Kosong!');
} else if (empty($password)) {
    header('location:index.php?error=Password Kosong!');
}

$q = mysqli_query($koneksi, "select * from user where username='$username' and password='$password'");
$row = mysqli_fetch_array ($q);

if (mysqli_num_rows($q) == 1) {
    $_SESSION['user_id'] = $row['user_id'];
    $_SESSION['username'] = $username;
    $_SESSION['fullname'] = $row['fullname'];
    $_SESSION['email'] = $row['email'];
    $_SESSION['nama_usaha'] = $row['nama_usaha'];
    $_SESSION['alamat'] = $row['alamat'];
    $_SESSION['kota'] = $row['kota'];
    $_SESSION['telp'] = $row['telp'];
    $_SESSION['gambar'] = $row['gambar'];    
    $_SESSION['level']  = $row['level'];
    $_SESSION['a']  = $row['a'];
    $_SESSION['b']  = $row['b'];
    $_SESSION['c']  = $row['c'];
    $_SESSION['d']  = $row['d'];
    $_SESSION['e']  = $row['e'];
    $_SESSION['f']  = $row['f'];
    $_SESSION['g']  = $row['g'];
    $_SESSION['h']  = $row['h'];
    $_SESSION['i']  = $row['i'];
    
    if ($_SESSION['level'] == 'admin'){
        header('location:admin/index.php');
    } else if ($_SESSION['level'] == 'user'){
        header('location:admin/index.php');
    }
    
} else {
    header('location:index.php?error=Anda Belum Terdaftar!');
}
?>

dari script login di atas terlihat sebelum melakukan login  password di enkripsi lebih dulu kemudian baru pengecheckan dengan fungsi mysqli_real_escape_string() untuk mencegah terjadinya bypass admin.

dengan menambahkan fungsi tersebut bisa mencegah terjadinya By Pass Admin dan mencegah terjadinya SQL injection, semoga informasi singkat ini bisa bermanfaat untuk anda yang membacanya, jika artikel ini bermanfaat jangan sungkan untuk membagikannya.

Happy Coding & Programming

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel