Cara Memperbaiki Bug SQL Injection Pada Website

Learn System Security - Halo kawan-kawan, sekarang saya akan sedikit berbagi tutorial Cara Memperbaiki Bug SQL Injection Pada Website.

Injeksi SQL (Bahaasa Inggris: SQL Injection)adalah sebuah teknik yang menyalahgunakan sebuah celah keamanan yang terjadi dalam lapisan basis data sebuah aplikasi. Celah ini terjadi ketika masukan pengguna tidak disaring secara benar dari karakter-karakter pelolos bentukan string yang diimbuhkan dalam pernyataan SQL atau masukan pengguna tidak bertipe kuat dan karenanya dijalankan tidak sesuai harapan. Ini sebenarnya adalah sebuah contoh dari sebuah kategori celah keamanan yang lebih umum yang dapat terjadi setiap kali sebuah bahasa pemrograman atau skrip diimbuhkan di dalam bahasa yang lain. (Sumber : https://id.wikipedia.org/wiki/Injeksi_SQL)


Langsung sobat sobat simak saja tutorial Cara Memperbaiki Bug SQL Injection Pada Website dibawah ini.

  • Saya mempunyai database bernama evinda dan memiliki tabel petugas, berikut ini isi kolom dari tabel petugas.

  • Dan berikut ini isi data dari tabel petugas.

  • Yang pertama kita akan membuat file koneksi yang saya beri nama config.php, berikut ini isi dari file config.php
    <?php
    mysql_connect('localhost','root','')or die('gagal koneksi');
    mysql_select_db('evinda')or die('gagal select db');
    ?>
  • Lalu buat file bernama lihat_data.php, dan berikut ini isi dari file tersebut :
    <table border cellpadding='3' cellspacing='0'>
        <tr><td>ID</td><td>NAMA DEPAN</td><td>DETAIL</td></tr>
        <?php
        require_once("config.php");

        $query = mysql_query("select * from petugas");
        while($data = mysql_fetch_assoc($query)){
            $id = $data['id'];
            $nama_depan = $data['nama_depan'];
           
            echo "
                    <tr>
                        <td>$id</td>
                        <td>$nama_depan</td>
                        <td><a href='detail.php?id=$id'>lihat</a></td>
                    </tr>
                ";
        }
        ?>
    </table>
  • Dan jangan lupa buat file detail.php yang nantinya file ini memiliki Bug SQL Injection, isi dari file detail.php :
    <table border cellpadding='3' cellspacing='0'>
        <tr><td>ID</td><td>NAMA DEPAN</td><td>NAMA BELAKANG</td><td>PASSWORD</td><td>HAK</td></tr>
        <?php
        require_once("config.php");
       
        if(isset($_GET['id'])){
            $id = $_GET['id'];
            $query = mysql_query("select * from petugas where id='$id'");
            while($data = mysql_fetch_assoc($query)){
                $id = $data['id'];
                $nama_depan = $data['nama_depan'];
                $nama_belakang = $data['nama_belakang'];
                $password = $data['password'];
                $hak = $data['hak'];
               
                echo "
                        <tr>
                            <td>$id</td>
                            <td>$nama_depan</td>
                            <td>$nama_belakang</td>
                            <td>$password</td>
                            <td>$hak</td>
                        </tr>
                    ";
            }
        }
        ?>
    </table>
  • Langsung saja kita buka file lihat_data.php, tampilannya seperti screenshot dibawah ini,
    Coba kita klik lihat pada kolom detail,

  • Beginilah tampilan setelah kalian klik lihat pada kolom detail.

  • Nah disini masalahnya, ketika kita menambahkan karakter kutip satu (') atau (%27) akan terjadi error pada baris PHP nya.
    Ini yang dinamakan Bug SQL Injection :D

  • Yukk kita coba scan menggunakan Tool SQL Injection Scanner...
    Dan Boom!, data dari website tersebut berhasil dilihat, anda bisa bayangkan bagaimana seorang hacker masuk dalam website kalian? Yups, dia mencuri data username dan password pada website kalian yang memiliki Bug SQL Injection.
screenshot data dari website yang memiliki Bug SQL Injection

  • Untuk memperbaiki bug SQL Injection, kita tambahkan kode dibawah ini,
    if(preg_match("/'|onion|%27/",$id)){
            echo "NO SQL Injection Please - Fixed by SquidBug";
            exit();
    }
    Untuk baris kode fullnya dibawah ini,
    <table border cellpadding='3' cellspacing='0'>
        <tr><td>ID</td><td>NAMA DEPAN</td><td>NAMA BELAKANG</td><td>PASSWORD</td><td>HAK</td></tr>
        <?php
        require_once("config.php");
       
        if(isset($_GET['id'])){
            $id = $_GET['id'];
            if(preg_match("/'|onion|%27/",$id)){
                echo "NO SQL Injection Please - Fixed by SquidBug";
                exit();
            }
            $query = mysql_query("select * from petugas where id='$id'");
            while($data = mysql_fetch_assoc($query)){
                $id = $data['id'];
                $nama_depan = $data['nama_depan'];
                $nama_belakang = $data['nama_belakang'];
                $password = $data['password'];
                $hak = $data['hak'];
               
                echo "
                        <tr>
                            <td>$id</td>
                            <td>$nama_depan</td>
                            <td>$nama_belakang</td>
                            <td>$password</td>
                            <td>$hak</td>
                        </tr>
                    ";
            }
        }
        ?>
    </table>
  • Dan saat kita memasukkan karakter kutip satu pada halam tersebut, akan keluar notifikasi "NO SQL Injection Please - Fixed by SquidBug".

  • Kita coba scan menggunakan tool yang kita gunakan tadi...

Terjadi error saat scan website tersebut dan data dari website tersebut tidak bocor.
Yapp, sudah tidak ada lagi Bug SQL Injection pada halaman terebut, selamat :D

  • Pada bagian code dibawah ini :
    echo "NO SQL Injection Please - Fixed by SquidBug";
  • Kalian juga bisa mengganti dengan :
    header("location:lihat_data.php")
    Jadi ketika memasukkan karakter kutip satu, akan langsung pergi ke file lihat_data.php.



Yaa begitulah sedikit berbagi tutorial "Cara Memperbaiki Bug SQL Injection Pada Website" dari saya, semoga dapat membantu sobat. Terimakasih sudah berkunjung.

0 comments