Apa Itu SQL Injection dan Bagamaina Cara Mengatasinya?

Bagikan artikel ini 🫰🏻

SQL Injection memungkinkan Hacker jahat untuk menyuntikkan kode arbitrer dalam queri SQL.

Sehingga dapat secara langsung mengambil dan mengubah data yang disimpan dalam database Sebuah Website.

Sejarah Singkat SQL Injection

Pada Perkembangan awal dunia internet, membangun website sangatlah mudah,tanpa JavaScript, tanpa CSS, dan hanya sedikit gambar. Namun seiring popularitas web, kebutuhan akan teknologi yang lebih maju dan situs web dinamis semakin meningkat. Membuat Berkembangnya CGI dan bahasa server-side seperti ASP, JSP dan PHP.

Sejak saat itu Situs web berubah dan mulai menyimpan inputan hasil pengguna dan konten situs dalam basis data. Oleh karena itu tidak mengherankan bahwa setiap bahasa scripting server-side yang populer menambahkan SQL database Sebagai pendukung tempat menyimpanya data.

Oleh Sebab itu banyak sekali peretas yang memanfaatkan hal ini untuk memasukan virus mereka ke dalam server database dan kemudian dapat di gunakan untuk Keperluan mereka.

Apa itu SQL Injection ?

SQL Injection adalah kerentanan keamanan web yang memungkinkan penyerang mengganggu queri yang dibuat aplikasi ke basis datanya. Biasanya memungkinkan hacker untuk melihat data yang biasanya tidak dapat mereka ambil. Dalam banyak kasus, hacker dapat memodifikasi atau menghapus data , yang dapat menyebabkan perubahan terus-menerus pada konten atau perilaku aplikasi.

Dalam beberapa situasi, hacker dapat meningkatkan serangan SQL Injection untuk mengkompromikan server yang mendasarinya atau infrastruktur back-end lainnya.

Apa Yang terjadi jika Serangan SQL injection berhasil ?

Serangan SQL Injection yang berhasil dapat mengakibatkan akses tidak sah ke data sensitif, seperti kata sandi, detail kartu kredit, atau informasi pengguna pribadi. Banyak pelanggaran kehilangan data profil tinggi dalam beberapa tahun terakhir adalah akibat dari serangan injeksi SQL, yang menyebabkan kerusakan reputasi dan denda peraturan. Dalam beberapa kasus,Hacker dapat memperoleh backdoor persisten ke dalam sistem.

Contoh SQL injection

Ada berbagai macam kerentanan, serangan, dan teknik injeksi SQL, yang muncul dalam situasi yang berbeda. Beberapa contoh injeksi SQL umum meliputi:

  • Retrieving hidden data, di mana Anda dapat memodifikasi queri SQL untuk mengembalikan hasil tambahan.
  • Subverting application logic, di mana Anda dapat mengubah kueri untuk mengganggu logika aplikasi.
  • UNION attacks,di mana Anda dapat mengambil data dari tabel database yang berbeda.
  • Examining the database, di mana Anda dapat mengekstrak informasi tentang versi dan struktur database
  • Blind SQL injection, di mana hasil kueri yang Anda kontrol tidak dikembalikan dalam respons aplikasi.

Cara Mengatasi SQL Injection

Bahasa server-side tidak dapat menentukan apakah string queri SQL salah format. Yang bisa mereka lakukan hanyalah mengirim string ke server database dan menunggu respons yang ditafsirkan.

Jadi, harus ada cara untuk membersihkan input pengguna dan memastikan injeksi SQL tidak dapat dilakukan. ada banyak cara untuk membersihkan input pengguna, mulai dari menerapkan addlashes() PHP secara global ke semuanya, hingga menerapkan sanitasi ke variabel “clean” pada saat merakit SQL query itu sendiri, seperti membungkus $_GET[‘id’] di atas dalam fungsi mysql_escape_string() PHP. Namun, menerapkan sanitasi pada queri itu sendiri adalah praktik pengkodean yang sangat buruk dan sulit untuk dipertahankan atau dilacak. Di sinilah sistem database telah menggunakan penggunaan pernyataan yang disiapkan.

Di bawah Ini adalah beberapa Cara untuk mengatasi SQL injection :

1. Lakukan Validasi Sebelum User menginput

Langkah pertama yang umum untuk mencegah serangan injeksi SQL adalah memvalidasi input pengguna. Pertama, identifikasi pernyataan SQL yang penting dan buat daftar whitelist untuk semua pernyataan SQL yang valid, dengan mengabaikan pernyataan yang tidak valid dari queri. Proses ini dikenal sebagai validasi input atau desain ulang queri.

Selain itu, Anda harus mengonfigurasi input untuk data pengguna berdasarkan konteks. Misalnya, bidang input untuk alamat email dapat difilter untuk memungkinkan hanya karakter dalam alamat email, seperti karakter “@” yang diperlukan. Demikian pula, nomor telepon dan nomor Identitas hanya boleh difilter untuk memungkinkan jumlah digit tertentu untuk masing-masing.

2. Membatasi Read-Access 

perlindungan injeksi SQL paling rendah adalah mengonfigurasi read-access ke database. Jika organisasi Anda hanya membutuhkan pengguna aktif yang menggunakan read-access, itu pasti lebih mudah untuk di konfigurasikan. langkah tambahan ini sangat penting untuk menghentikan hacker mengubah informasi yang disimpan.

3. Membuat Example dan Explanation SQL statement

Tidak ada sistem basis data utama yang beroperasi seperti printf . MySQL, secara langsung, membutuhkan setidaknya dua perintah (yang pertama PPREPARE dan kedua EKSEKUSI). PHP, melalui PDO library juga memerlukan pendekatan susun yang serupa, seperti berikut ini:

$stmt = $dbh->prepare("SELECT * FROM users WHERE USERNAME = ? AND PASSWORD = ?");$stmt->execute(array($username, $password));

4. Jangan Bagikan User database

Ketika anda memiliki akses ke sebuah database website maka simpanlah user dan password dari database tersebut.

Anda jangan pernah membagikan atau membicarakan user dan password database ini. Karena jika ada yang mengetahuinya maka bisa menyebabkan terhack nya sistem database anda.

5. Menggunakan Parameter Queri

Sebagian besar contoh injeksi SQL dapat dicegah dengan menggunakan berparameter Queri (juga dikenal sebagai pernyataan yang disiapkan).

Kode berikut rentan terhadap injeksi SQL karena input pengguna digabungkan langsung ke dalam kueri:

String query = "SELECT * FROM products WHERE category = '"+ input + "'";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);

Kode ini dapat dengan mudah ditulis ulang dengan cara mencegah input pengguna mengganggu struktur queri:

PreparedStatement statement = connection.prepareStatement("SELECT * FROM products WHERE category = ?");
statement.setString(1, input);
ResultSet resultSet = statement.executeQuery();

Parameter Queri dapat digunakan untuk situasi apa pun di mana input yang tidak tepercaya muncul sebagai data dalam queri, termasuk WHERE klausa dan nilai statement INSERT atau UPDATE.

Kesimpulan

SQL injection sebenarnya bisa dengan mudah di atasi asalkan anda tidak membuat celah para hacker untuk bisa memasukan Virusnya kedalam Database .

Demikian Pembahasan Terkait Apa Itu SQL Injection dan Bagamaina Cara Mengatasinya, semoga bisa bermanfaat 🙂

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rata rata rating 5 / 5. Jumlah rate 4

No votes so far! Be the first to rate this post.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Artikel Terkait

One Response

Leave a Reply

Your email address will not be published. Required fields are marked *