Pengertian SQL Injection
SQL injection adalah
ialah sebuah agresi h4ck1ng yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client.
klarifikasi detail dari SQL injections ialah serangan yang memanfaatkan kelalaian dari website yang mengijinkan user untuk menginputkan data tertentu tanpa melaksanakan filter terhadap malicious character. Inputan tersebut biasanya di masukan pada box search atau bagian-bagian tertentu dari website yang berinteraksi dengan database SQL dari situs tersebut. Perintah yang dimasukan para attacker biasanya ialah sebuah data yang mengandung link tertentu yang mengarahkan para korban ke website khusus yang dipakai para attacker untuk mengambil data langsung korban.
Untuk menghindari link berbahaya dari website yang telah terinfeksi serangan SQL injection, Anda sanggup memakai aplikasi pelengkap menyerupai NoScript yang merupakan Add-ons untuk aplikasi web browser Firefox. Meskipun tidak terlalu sempurna, setidaknya Anda sanggup mengurangi kemungkinan Anda menjadi korban.
klarifikasi detail dari SQL injections ialah serangan yang memanfaatkan kelalaian dari website yang mengijinkan user untuk menginputkan data tertentu tanpa melaksanakan filter terhadap malicious character. Inputan tersebut biasanya di masukan pada box search atau bagian-bagian tertentu dari website yang berinteraksi dengan database SQL dari situs tersebut. Perintah yang dimasukan para attacker biasanya ialah sebuah data yang mengandung link tertentu yang mengarahkan para korban ke website khusus yang dipakai para attacker untuk mengambil data langsung korban.
Untuk menghindari link berbahaya dari website yang telah terinfeksi serangan SQL injection, Anda sanggup memakai aplikasi pelengkap menyerupai NoScript yang merupakan Add-ons untuk aplikasi web browser Firefox. Meskipun tidak terlalu sempurna, setidaknya Anda sanggup mengurangi kemungkinan Anda menjadi korban.
SQL Injection
merupakan teknik mengeksploitasi web aplikasi yang didalamnya memakai database untuk penyimpanan data.
apa penyebab terjadinya SQL Injection?
- tidak adanya penanganan terhadap huruf – huruf tanda petik satu ‟ dan juga huruf double minus -- yang mengakibatkan suatu aplikasi sanggup disisipi dengan perintah SQL.
- Sehingga seorang Hacker menyisipkan perintah SQL kedalam suatu parameter maupun suatu form.
Bug SQL Injection berbahaya atau tidak?
- Teknik ini memungkinkan seseorang sanggup login kedalam sistem tanpa harus mempunyai account.
- Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database.
- Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak sanggup memberi layanan kepada web server.
kemudian apa saja yang diharapkan untuk melaksanakan SQL Injection ?
- Internet Exploler / Browser
- PC yang terhubung internet
- Program atau software menyerupai softice
Mari kita lihat pola penerapan SQL Injection menyerupai di bawah. Perlu diketahui bahwa pola yang saya gunakan ialah dengan bahasa pemrograman PHP dan database MySQL.
Seringkali ketika kita akan mengambil data dari database, kita akan memakai query seperti
"SELECT * FROM table_user WHERE username = '".$username."';"
Ketika user memasukkan data ke variable $username dengan nilai etersoul maka instruksi di atas akan berubah menjadi:
SELECT * FROM table_user WHERE username = 'etersoul';
Hasil di atas tampak tidak bermasalah dan dengan gampang sang programmer akan mendapat semua data mengenai seorang user dari table_user yang mempunyai username = ‘etersoul’. Masalah akan timbul bila seorang h4ck3r (atau user lain) yang mencoba untuk memasukkan nilai ' OR 1 = 1; -- ke dalam variabel $username. Maka hasil dari penggunaan variabel tersebut adalah:
SELECT * FROM table_user WHERE username = '' OR 1 = 1; --'
Query di atas akan mengambil semua data yang terdapat dalam table_user sebab terdapat nilai 1 = 1 yang selalu bernilai true. Sedangkan penggunaan -- mempunyai kegunaan semoga instruksi sehabis tanda tersebut dianggap sebagai komentar (comment) dan tidak dihukum oleh SQL. Seorang h4ck3r sanggup saja memakai data yang telah didapat di atas untuk keperluan yang jelek contohnya memakai account user sebab password telah diketahui (walau pada kenyataannya ketika ini kebanyakan password telah dienkripsi atau diacak sebelum dimasukkan ke database).
jikalau pola di atas tidak cukup silahkan gunakan perintah berikut ini
mari kita coba memakai '; DROP TABLE table_user; -- sehingga menjadi:
SELECT * FROM table_user WHERE username = ''; DROP TABLE table_user; --'
Setelah query tersebut dieksekusi, maka hilanglah tabel table_user dari database Anda, kecuali Anda mempunyai backup atas table itu.
Lalu bagaimana cara mencegah terjadinya SQL Injection ini?
Cara yang sanggup dilakukan cukup mudah. Di PHP sendiri disediakan fungsi mysql_real_escape_string() yang sanggup dipakai untuk “membersihkan” (sanitize) string dengan melaksanakan escape atau perubahan terhadap karakter-karakter tertentu, contohnya huruf \ menjadi \\, ” menjadi \” sehingga tidak terjadi salah “asumsi” oleh SQL. Sedangkan untuk melaksanakan sanitize terhadap integer sanggup dipakai fungsi intval(). Untuk float sanggup dipakai floatval(). Sekarang mari kita lihat instruksi h4ck3r di atas sehabis di-sanitize dengan mysql_real_escape_string($username);
SELECT * FROM table_user WHERE username = '\' OR 1 = 1; --'
atau dengan menggunakan
SELECT * FROM table_user WHERE username = '\'; DROP TABLE table_user; --'
kini tanda ‘ telah di-escape menjadi \’ sehingga SQL tidak akan menganggap tanda kutip tersebut sebagai belahan dari perintah SQL untuk menutup tanda kutip sebelumnya, melainkan sebagai sebuah karakter.
untuk bahasa pemrograman lainnya umumnya telah disediakan juga fungsi untuk melaksanakan escape terhadap string (umumnya fungsi tersebut memakai kata escape). Dalam PHP sendiri sanggup dipakai mysql_escape_string(), akan tetapi fungsi ini tidak disarankan untuk dipakai sebab tidak melaksanakan escape terhadap beberapa jenis karakter.
penggunaan mysql_escape_string(),
Merubah string yang mengandung huruf „ menjadi \‟ misal SQL injec‟tion menjadi SQL injec\‟tion
Contoh :
$kar = “SQL injec‟tion”;
$filter = mySQL_escape_string($kar);
echo”Hasil filter : $filter”;
penggunaan mysql_escape_string(),
Merubah string yang mengandung huruf „ menjadi \‟ misal SQL injec‟tion menjadi SQL injec\‟tion
Contoh :
$kar = “SQL injec‟tion”;
$filter = mySQL_escape_string($kar);
echo”Hasil filter : $filter”;
Sumber http://www.sharingse.net/