Mengatasi SQL Injection Login di PHP
Kali ini kami akan membahas bagaimana cara mengatasi SQL injection login di php menggunakan beberapa metode script seperti escape_string, addslashes, atau encript password, sehingga dapat mencegah serangan yang ditujukan ke database server. SQL injection adalah salah satu jenis teknik penyerangan sistem keamanan komputer dengan cara memasukkan nilai input tertentu melalui form login sehingga dapat meng-akses database. SQL injection di php dapat berjalan dengan baik jika ditemukan celah keamanan pada sebuah halaman login web atau aplikasi yang tidak diproteksi dengan baik. Oleh karena itu, penting sekali untuk dipelajari bagaimana cara mencegah SQL injection pada form login di php, sehingga sistem aplikasi dan database menjadi lebih aman.
Sebelum membahas cara mencegah atau mengatasi SQL injection login di php lebih detail, kami jelaskan kembali terlebih dulu bagaimana cara kerja SQL injection dengan php. Secara umum sintak SQL yang digunakan pada proses pengembangan web atau aplikasi adalah sintak dalam kategori perintah DML (Data Manipulation Language) yaitu INSERT, SELECT, UPDATE, dan DELETE. Perintah SQL tersebut dikirim menggunakan method POST atau GET berikut dengan value nya. Jika value atau nilai tersebut tidak di enkripsi, maka ini adalah celah dari sebuah sistem keamanan, dan dengan mudah mendapatkan serangan dalam bentuk SQL injection.
Mengatasi SQL Injection Login di PHP
Oleh karena itu, agar dapat mengetahui cara mencegah atau mengatasi SQL injection login di php, maka sebaiknya kita pahami terlebih dulu bagaimana cara kerja SQL injection itu sendiri.
Begini Cara Kerja SQL Injection.
Seperti dijelasksan di atas bahwa sintak SQL yang digunakan pada proses pengembangan adalah sintak dalam kategori perintah DML yaitu INSERT, SELECT, UPDATE, dan DELETE. Sebagaimana contoh baris URL web di bawah ini.
http://www.arya-satya.com/index.php?id=10
Maka perintah atau query SQL untuk menampilkan record berdasarkan baris URL web seperti di atas secara umum adalah sebagai berikut.
SELECT * FROM tb_berita WHERE id=10
Sehingga ketika diimplementasikan ke dalam pemrograman PHP akan menjadi baris kode seperti ini.
$query ="SELECT * FROM tb_berita WHERE id='$_GET[id]'";
Dan ketika query tersebut dijalankan, maka database server akan memberikan respon balik dalam bentuk hasil sesuai parameter yang dikirimkan. Akan tetapi jika kita memodifikasi parameter yang dikirim melalu URL dengan sebuah karakter khusus yaitu single quote ( ' ) seperti ini.
http://www.arya-satya.com/index.php?id=10'
Maka query SQL sebagaimana URL tersebut tidak akan dapat dijalankan dan database server akan memberikan respon balik berupa pesan error seperti berikut.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to yourMySQL server version for the right syntax to use near ''' at line 1
Kenapa terjadi error? karena pada sisi server, query SQL yang dijalankan mengandung karakter single quote ( ' ) seperti dibawah ini.
SELECT * FROM tb_berita WHERE id=10'
Dari penjelasan di atas, maka hal tersebut adalah sebuah celah keamanan situs dari sisi scripting dan akan dengan mudah di eksploitasi dengan metode SQL Injection.
Kemudian apa hubungannya penjelasan tersebut dengan tips cara mencegah atau mengatasi SQL injection login di php? Tentu saja saling berkaitan. Karena proses login juga melakukan query SQL dalam kategori data manipulation language, yaitu SELECT untuk mencocokan nilai yang disubmit dari form login dengan nilai di dalam database.
Tips Keamanan Sistem Dari Serangan SQL Injection PHP
Berikut tips cara mengatasi SQL injection login di php sehingga dapat mencegah serangan yang dilakukan oleh intruder yang biasanya melalui form login. Yaitu menggunakan script anti SQL injection yang telah tersedia di dalam sistem PHP dan beberapa teknik lainnya, seperti berikut ini.
- Menggunakan fungsi mysqli_real_escape_string()
- Menggunakan fungsi addslashes()
- Menggunakan encript password.
1. Mencegah SQL injection login dengan fungsi mysqli_real_escape_string().
Jika diperlukan, penggunaan fungsi tersebut dapat digabungkan dengan fungsi trim(). Berikut adalah contoh baris kode script dengan fungsi mysqli_real_escape_string.
$username =mysqli_real_escape_string($conn, $_POST['username']); $password =mysqli_real_escape_string($conn, $_POST['password']); $query =mysqli_query($conn, "SELECT * FROM tb_user WHERE username='$username' AND password='$password'");
Peranan fungsi mysqli_real_escape_string dalam mengatasi SQL injection login di php adalah untuk mem-bypass spesial karakter dalam query SQL, sehingga ketika attacker menyertakan karakter seperti ' ! ^ ] " dan lain sebagainya, maka fungsi ini tidak akan membaca karakter tersebut.
2. Mencegah SQL injection login dengan fungsi addslashes().
Jika diperlukan, penggunaan fungsi addslashes sebagai script anti SQL injection juga dapat digabungkan dengan fungsi trim(). Berikut adalah contoh baris kode script dengan fungsi addslashes.
$username =addslashes($conn, $_POST['username']); $password =addslashes($conn, $_POST['password']); $query =mysqli_query($conn, "SELECT * FROM tb_user WHERE username='$username' AND password='$password'");
3. Mencegah SQL injection login dengan encript password.
Tips atau cara lain untuk mencegah serangan SQL injection pada form login php adalah dengan melakukan enkripsi password sebelum disubmit kedalam database. Jenis enkripsi yang umum digunakan adalah MD5, atau silahkan gunakan fungsi enscript lainnya.
Berikut adalah contoh baris kode script login dengan enkripsi md5.
$username =mysqli_real_escape_string($conn, $_POST['username']); $password =mysqli_real_escape_string($conn, md5($_POST['password'])); $sql =mysqli_query($conn, "SELECT * FROM tb_user WHERE username='$username' AND password='$password'");
Sebagaimana contoh script php anti SQL injection di atas, penggunaan encript password md5 ternyata juga dapat digabungkan sekaligus dengan fungsi mysqli_real_escape_string.
Cara Mengatasi SQL Injection Login di PHP
Sekian penjelasan dari kami tentang sistem keamanan database yaitu cara mencegah atau mengatasi SQL injection login di php yang umumnya dilakukan melalui form login. Jika terjadi gagal atau error atau tidak berjalan berhasil, silahkan hubungi kami melalui email atau melalui form komentar dan obrolan. Semoga dapat membantu.
Baca juga :
- Script PHP Mengurangi Stok Barang
- Fungsi Explode dan Implode di PHP - Function
- Fungsi Str_replace pada PHP
- Fungsi Addslashes pada PHP
- Fungsi Stripslashes pada PHP
Mengatasi SQL Injection Login di PHP
Tags: cara mengatasi sql injection di php, mencegah serangan sql injection, script php anti sql injection, sql injection php, mengatasi sql injection login di php