Keamanan dan Hacking

Cara Mencegah Serangan SQL Injection Pada Website

cara mencegah serangan SQL Injection

Sebawa.com – Catatan kali ini membahas tentang keamanan pada sebuah website, untuk menjawab pertanyaan salah satu pembaca sebawa.com yang bertanya melalui catatan saya dengan judul cara membuat laporan sederhana dengan php dan MySql, pertanyaan tersebut mengenai cara mencegah serangan SQL Injection, sebelum melangkah lebih jauh lagi mengenai cara mencegah SQL Injection kita akan mengenal dulu mengenai SQL Injection tersebut.

Tentang SQL Injection

SQL Injection merupakan salah satu dari beberapa jenis penyerangan yang ditujukan kedalam database server. Cara yang dipergunakan cukup sederhana, yaitu penyerang berusaha untuk bisa memasuki query yang tidak valid melalui field inputan atau bahkan bisa juga melalui URL. Seringkali teknik ini kebanyakan diabaikan.

Cara Kerja SQL Injection

Serangan dari SQL Injection dilakukan dengan mengirimkan perintah SQL ke dalam server basis data dengan melalui permintaan web. Untuk setiap saluran input dapat digunakan untuk mengirimkan perintah jahat, termasuk kedalam elemen <input>, string kueri, cookies dan file.


Untuk lebih jelasnya, sebagai contoh anda memiliki form login pada website anda, seperti dibawah ini :

 

cara mencegah serangan SQL Injection

Saat pengguna memasukan pernyataan dan menekan tombol “Log In”, informasinya diposkan kembali ke server web Anda, di mana digabungkan dengan perintah SQL. Misalnya, di PHP, kode akan terlihat seperti berikut:

$sql_command = "select * from users where username = '" . $_POST['username']; $sql_command .= "' AND password = '" . $_POST['password'] . "'";

Perintah kemudian akan dikirim ke server database, dan dataset yang dihasilkan akan menentukan apakah username dan password sesuai dengan akun pengguna yang valid. Pengguna rata-rata yang memasukkan “admin” sebagai nama pengguna dan “admin” sebagai kata sandi jika kita terjemahkan kedalam sebuah perintah akan menjadi sebagai berikut :

SELECT * FROM users WHERE username='admin' AND password='admin'

tetapi bagaimana jika penyerang menggunakan perintah seperti dibawah ini :

SELECT * FROM users WHERE username='john' OR 1=1; -- ' AND password='123456'

Baris perintah diatas memungkinkan pengguna untuk bisa melewati Log In tanpa masuk dengan pernyataan yang benar. Teknik SQL Injection diatas adalah yang paling sederhana. Dengan sedikit usaha, Pengguna yang sama akan bisa memasukan pengguna baru dan menghapus pengguna atau memodifikasi akun pengguna yang ada. Pada halaman lainnya, skema yang sama dapat dipergunakan untuk menampilkan informasi yang seharusnya dibatasi pada pengunjung normal, atau bahkan bisa mengubah isinya.

Bagaimana cara mencegah serangan SQL Injection ?

Untuk Cara mencegah SQL Injection, maka kita harus selalu mengamankan value yang dikirimkan oleh URL atau field didalam form. Dan jangan pernah kita menggunakan parameter dari URL maupun form tanpa sebelumnya melakukan validasi.

Dibawah ini ada beberapa cara untuk mengamankan nilai input, diantaranya yang sering dipergunakan :

  • Dengan menggunakan mysql_real_escape_string(). Penggunaannya bisa bersamaan dengan fungsin trim(). Dibawah adalah contoh penerapannya .

$username = mysql_real_escape_string(trim($_POST[‘username’]));

  • Bisa juga menggunakan addslashes(). Penggunaannya juga bisa kita gabungkan dengan fungsi trim(). Dibawah ada contoh penerapannya :

$username = addslashes(trim($_POST[‘username’]));

  • Bisa juga menggunakan casting input. Nilainya harus berupa integer, dan bisa menggunakan casting input dengan fungsi int().

$id = (int) $_GET[‘id’];

  • Cara yang terakhir adalah dengan cara memeriksa apakah inputan memiliki karakter terlarang dengan menggunakan fungsi strops.
$username = ‘coba2’;
strpos($username, ‘;’)?die(‘username tidak boleh mengandung “;”‘):;

Secara umum, anda harus selalu memeriksa setiap kode disetiap halaman yang menggabungkan isi halaman, perintah, string dll di website anda. Dengan memeriksa setiap kode untuk mengatasi kerentanan dan lubang keamanan harus menjadi bagian yang melekat disetiap proses pengembangan sebuah perangkat lunak.

Anda juga bisa menggunakan sebuah alat pemindaian seperti sqlmap untuk menjelajahi laman situs anda dan mendeteksi kerentanan yang berpotensi dapat dengan mudah diserang oleh SQL Injection. Tools ini sebenarnya seringkali digunakan oleh hacker untuk menemukan dan memanfaatkannya dalam serangan SQL Injection pada halaman website yang ditargetkan. Jadi kenapa tidak kita gunakan untuk membuat situs website kita lebih aman ?

Jadi kesimpulannya untuk mencegah serangan SQL Injection dibutuhkan beberapa langkah mudah dan perhitungan yang baik untuk bisa melindungi situs anda dan pengguna situs anda, dan perlindungan ini harus menjadi sebuah prioritas utama saat anda hendak memeriksa setiap kode dihalaman website anda dan mencari lubang keamanan lalu memperbaikinya.






Article written by Eriga S Al-Mansur

Sebuah media belajar teknologi dan komputer yang sederhana dan dapat memberikan konten yang mudah dipahami dalam mempelajari teknologi dan komputer. "Selalu berbaktilah kepada orang tua mu".

This Post Has One Comment

  1. reseller domain Reply

    terima kasih infonya sangat bermanfaat

Tinggalkan Balasan

This is a demo store for testing purposes — no orders shall be fulfilled. Dismiss

%d blogger menyukai ini: