Cara untuk Melindungi Situs Anda Dari SQLi

Cara untuk Melindungi Situs Anda Dari SQLi
Hi semua pengguna, ini adalah tutorial sederhana untuk pemula tentang bagaimana untuk melindungi situs Anda dari SQL Injection dan tutorial ini juga akan membantu Anda memeriksa apakah situs Anda rentan terhadap SQLi dan bagaimana membuatnya tahan terhadap SQLi.

  Apa itu SQL Injection?

SQL singkatan dari Structured Query Language, dan merupakan bahasa yang digunakan oleh database situs web yang paling. SQL Injection merupakan teknik yang digunakan oleh hacker untuk menambahkan SQL sendiri ke SQL situs Anda untuk mendapatkan akses ke informasi rahasia atau untuk mengubah atau menghapus data yang membuat situs Anda berjalan. Aku akan berbicara tentang hanya satu bentuk serangan SQL Injection yang memungkinkan hacker untuk log in sebagai administrator - bahkan jika dia tidak tahu password.




Apakah situs Anda rentan?
Jika website Anda memiliki form login untuk administrator untuk login, pergi ke situs Anda sekarang, dalam tipe kolom username nama pengguna administrator.
Pada kolom password, ketik atau paste ini:



x' or 'a' = 'a


Jika website tidak membiarkan Anda log in menggunakan string ini Anda dapat bersantai sedikit, artikel ini mungkin tidak berlaku untuk Anda. Namun Anda mungkin ingin mencoba alternatif ini:

x' or 1=1--

Atau Anda bisa mencoba menyisipkan salah satu atau kedua string di atas ke kedua login dan password. Atau jika Anda sudah familiar dengan SQL Anda bisa mencoba variasi lainnya. Seorang hacker yang benar-benar ingin mendapatkan akses ke situs Anda akan mencoba banyak variasi sebelum ia menyerah.

Jika Anda dapat login menggunakan salah satu metode ini kemudian mendapatkan teknologi web Anda untuk membaca artikel ini, dan untuk membaca semua metode lain dari SQL Injection. Para hacker dan "skript kiddies" tahu semua hal ini; teknisi web Anda perlu tahu juga.

Jika Anda dapat login, kemudian kode yang menghasilkan SQL untuk login terlihat seperti ini:


$sql =
"SELECT * FROM users
"WHERE username = '" . $username .
"' AND password = '" . $password . "'";


Ketika Anda login secara normal, katakanlah menggunakan admin userid dan password rahasia, apa yang terjadi adalah admin diletakkan di tempat $ username dan rahasia disimpan di tempat $ password. SQL yang dihasilkan maka terlihat seperti ini:




SELECT * FROM users WHERE username = 'admin' and PASSWORD = 'secret'

Tetapi ketika Anda memasukkan x 'atau' a '=' sebagai password, SQL yang dihasilkan terlihat seperti ini:



SELECT * FROM users WHERE username = 'admin' and PASSWORD = 'x' or 'a' = 'a'


Perhatikan bahwa string: x 'or' a '=' telah disuntikkan sebuah frase ekstra ke dalam klausa WHERE: atau 'a' = 'a'. Ini berarti bahwa WHERE selalu benar, sehingga query ini akan kembali berturut-turut berisi rincian pengguna.


 
 
Jika hanya ada satu pengguna didefinisikan dalam database, maka rincian bahwa pengguna selalu akan kembali dan sistem akan memungkinkan Anda untuk log in Jika Anda memiliki beberapa pengguna, maka salah satu dari para pengguna akan dikembalikan secara acak.

Bagaimana untuk melawan terhadap SQLi
 
Memperbaiki celah keamanan ini tidak begitu sulit. Ada beberapa cara untuk melakukannya. Jika Anda menggunakan MySQL,, metode yang paling sederhana adalah untuk menghindari username dan password, menggunakan mysql_escape_string ( ) atau mysql_real_escape_string ( ) fungsi, misalnya:
 
$userid = mysql_real_escape_string($userid);
$password = mysql_real_escape_string($password);
$sql =
"SELECT * FROM users
"WHERE username = '" . $username .
"' AND password = '" . $password . "'";


Sekarang ketika SQL dibangun, ia akan keluar sebagai:

SELECT * FROM users WHERE username = 'admin' and PASSWORD = 'x\' or \'a\' = \'a' 


Mereka backslash (\) membuat database memperlakukan quote seperti karakter normal ketimbang sebagai pembatas, sehingga database tidak lagi menafsirkan SQL sebagai memiliki OR di klausa WHERE.
Ini hanyalah sebuah contoh sederhana. Dalam prakteknya Anda akan melakukan sedikit lebih dari ini karena ada banyak variasi serangan ini. Sebagai contoh, Anda mungkin struktur SQL berbeda, mengambil pengguna menggunakan nama pengguna saja dan kemudian memeriksa secara manual bahwa pertandingan password atau pastikan Anda selalu menggunakan variabel mengikat (pertahanan terbaik terhadap injeksi SQL dan sangat dianjurkan!). Dan kau selalu harus melarikan diri semua data yang masuk dengan menggunakan fungsi yang sesuai dari bahasa apapun situs Anda ditulis dalam - bukan hanya data yang sedang digunakan untuk login.


MESKIPUN TIDAK SANGAT Lengkap, TUT INI MELIPUTI DASAR-DASAR CARA MENENTANG SQLi.
1 Komentar untuk " Cara untuk Melindungi Situs Anda Dari SQLi "

Back To Top