Pengertian SQL Injection beserta patch bug SQL Injection


Assalamualaikum wr.wb,balik lagi bersama saya sob:V

Disini saya akan membagikan ilmu lagi nih ke kalian:V,kan saya sudah share materi hack database website metode SQL injection nah sekarang admin akan membagikan cara patch beserta pengertian SQL injection.

SQL injection adalah teknik untuk melihat/menampilkan/memunculkan database yang tersimpan di website.teknik ini dengan mengimbuhkan kode sensitif di parameternya.teknik sangat berbahaya dan mimpi buruk bagi admin website pastinya.tapi tenang sob,admin sedang berbaik hati jadinya saya akan membagikan tricknya untuk mengamankan database anda dari serangan hacker:V.ok langsung saja ke cara patchnya. Ini adalah contoh kode mysql yang vulnerability(rentan keamanan):

<?php                                                               

// (nama host, username mysql, password, nama table)                

$conn = mysqli_connect("localhost","root","","sqli");

 if ($conn->connect_errno) {

    echo die("Failed to connect to MySQL: " . $conn->connect_error);

}

$id = $_GET['id']; 

$stmt = mysqli_query($conn, "SELECT * FROM user where id ='$id' "); 

    while($row = mysqli_fetch_array($stmt)){

?>


Nah kode diatas sangat vuln terhadap SQL Injection.tapi min kenapa kode tersebut dikatakan sebagai kode yang rentan terhadap SQL Injection attack?karena source code diatas tidak adanya filtering terhadap karakter seperti ('),(-),(").lalu bagaimana min caranya untuk mengamankan database kita dari serangan hacker?

berikut kode untuk patch bug SQL Injection.

<?php 

// (nama host, username mysql, password, nama table)

$conn = mysqli_connect("localhost","root","","sqli");

 if ($conn->connect_errno) {

    echo die("Failed to connect to MySQL: " . $conn->connect_error);

}

// Prepare

$stmt = $conn->prepare("SELECT * FROM user where id = ? ")

// Bind

$stmt->bind_param("s", $_GET['id']);

// Execute

$stmt->execute();

$hasil = $stmt->get_result();

    while($row = mysqli_fetch_array($hasil)){

?>

Nah source code diatas adalah source code untuk memperbaiki/fix patch bug SQLi metode prepared statement.Proses pembuatan prepared statements membutuhkan 3 langkah yaitu Prepared, Bind, dan Execute. Pada proses prepared, kita mempersiapkan query yang akan dijalankan, tetapi tanpa mengisi 'data'. Bagian dimana 'data' berada digantikan dengan tanda tanya (?) sebagai tanda bahwa bagian ini akan diisi dengan variable data.


Proses selanjutnya adalah BIND, merupakan proses kedua setelah query dilakukan, dimana nantinya akan ada sebuah proses pengiriman data yang sebelumnya telah di tandai dalam sebuah proses prepare pada query yang menggunakan tanda (?). Hal yang harus diperhatikan adalah data type yang kita kirim sebagai variable, sebagai contoh diatas saya isi dengan (s) yang berarti tipe data berupa string, (i) untuk integer, (d) untuk double, dan (b) untuk boolean.


Langkah berikutnya adalah mengeksekusi prepared query yang telah kita buat.

Sekian materi dari saya kali ini,jika artikel ini membantu sobat silahkan share artikel ini ke media sosial sobat.karena berbagi itu indah:V

Sekian wa'assalamualaikum wr.wb