SQL Injection (SQLi) adalah jenis serangan injeksi yang memungkinkan untuk mengeksekusi pernyataan SQL berbahaya. Pernyataan ini mengontrol server database di belakang aplikasi web. Penyerang dapat menggunakan kerentanan SQL Injection untuk melewati tindakan keamanan aplikasi. Mereka dapat berkeliling otentikasi dan otorisasi halaman web atau aplikasi web dan mengambil konten dari seluruh database SQL. Mereka juga dapat menggunakan SQL Injection untuk menambah, memodifikasi, dan menghapus catatan dalam database Show
Kerentanan SQL Injection dapat memengaruhi situs web atau aplikasi web apa pun yang menggunakan database SQL seperti MySQL, Oracle, SQL Server, atau lainnya. Penjahat dapat menggunakannya untuk mendapatkan akses tidak sah ke data sensitif Anda. informasi pelanggan, data pribadi, rahasia dagang, kekayaan intelektual, dan banyak lagi. Serangan SQL Injection adalah salah satu kerentanan aplikasi web tertua, paling lazim, dan paling berbahaya. Organisasi OWASP (Proyek Keamanan Aplikasi Web Terbuka) mencantumkan injeksi dalam dokumen OWASP Top 10 2017 mereka sebagai ancaman nomor satu terhadap keamanan aplikasi web Bagaimana dan Mengapa Serangan Injeksi SQL DilakukanUntuk melakukan serangan SQL Injection, penyerang pertama-tama harus menemukan input pengguna yang rentan di dalam halaman web atau aplikasi web. Halaman web atau aplikasi web yang memiliki kerentanan SQL Injection menggunakan masukan pengguna tersebut secara langsung dalam kueri SQL. Penyerang dapat membuat konten input. Konten semacam itu sering disebut payload berbahaya dan merupakan bagian kunci dari serangan itu. Setelah penyerang mengirimkan konten ini, perintah SQL berbahaya dijalankan di database SQL adalah bahasa kueri yang dirancang untuk mengelola data yang disimpan dalam basis data relasional. Anda dapat menggunakannya untuk mengakses, memodifikasi, dan menghapus data. Banyak aplikasi web dan situs web menyimpan semua data dalam database SQL. Dalam beberapa kasus, Anda juga dapat menggunakan perintah SQL untuk menjalankan perintah sistem operasi. Oleh karena itu, serangan SQL Injection yang berhasil dapat menimbulkan konsekuensi yang sangat serius
Ada beberapa jenis serangan SQL Injection. in-band SQLi (menggunakan kesalahan database atau perintah UNION), SQLi buta, dan SQLi out-of-band. Anda dapat membaca lebih lanjut tentang mereka di artikel berikut. Jenis SQL Injection (SQLi), Blind SQL Injection. Apa itu Untuk mengikuti langkah demi langkah bagaimana serangan SQL Injection dilakukan dan konsekuensi serius apa yang mungkin ditimbulkannya, lihat. Memanfaatkan Injeksi SQL. Contoh Langsung Contoh Injeksi SQL SederhanaContoh pertama sangat sederhana. Ini menunjukkan, bagaimana penyerang dapat menggunakan kerentanan SQL Injection untuk mengatasi keamanan aplikasi dan mengautentikasi sebagai administrator Skrip berikut adalah pseudocode yang dijalankan di server web. Ini adalah contoh sederhana mengautentikasi dengan nama pengguna dan kata sandi. Database contoh memiliki tabel bernama
Kolom input ini rentan terhadap SQL Injection. Penyerang dapat menggunakan perintah SQL dalam masukan dengan cara yang akan mengubah pernyataan SQL yang dijalankan oleh server basis data. Misalnya, mereka dapat menggunakan trik yang melibatkan kutipan tunggal dan menyetel bidang 0 ke _Akibatnya, server basis data menjalankan kueri SQL berikut
Karena pernyataan 1, klausa 2 mengembalikan 3 pertama dari tabel users tidak peduli apa username dan password adalah. Pengguna pertama _3 dalam database seringkali adalah administrator. Dengan cara ini, penyerang tidak hanya melewati otentikasi tetapi juga mendapatkan hak administrator. Mereka juga dapat mengomentari sisa pernyataan SQL untuk mengontrol eksekusi kueri SQL lebih lanjut _Contoh Injeksi SQL Berbasis SerikatSalah satu jenis SQL Injection yang paling umum menggunakan operator UNION. Ini memungkinkan penyerang untuk menggabungkan hasil dari dua atau lebih pernyataan SELECT menjadi satu hasil. Teknik ini disebut SQL Injection berbasis serikat Berikut ini adalah contoh dari teknik ini. Ini menggunakan halaman web testphp. vulnweb. com, situs web rentan yang sengaja dihosting oleh Acunetix Permintaan HTTP berikut adalah permintaan normal yang akan dikirim oleh pengguna yang sah _Parameter 8 rentan terhadap SQL Injection. Muatan berikut mengubah kueri untuk mencari rekaman yang tidak ada. Ini menetapkan nilai dalam string kueri URL ke 9. Tentu saja, bisa jadi ada nilai lain yang tidak ada di database. Namun, nilai negatif adalah tebakan yang bagus karena pengidentifikasi dalam database jarang berupa angka negatifDalam SQL Injection, operator 0 biasanya digunakan untuk melampirkan kueri SQL berbahaya ke kueri asli yang dimaksudkan untuk dijalankan oleh aplikasi web. Hasil query yang disuntikkan akan digabungkan dengan hasil query awal. Ini memungkinkan penyerang untuk mendapatkan nilai kolom dari tabel lain
Contoh berikut menunjukkan bagaimana muatan SQL Injection dapat digunakan untuk mendapatkan data yang lebih bermakna dari situs yang rentan ini
Cara Mencegah Injeksi SQLSatu-satunya cara pasti untuk mencegah serangan SQL Injection adalah validasi input dan kueri dengan parameter termasuk pernyataan yang disiapkan. Kode aplikasi tidak boleh menggunakan input secara langsung. Pengembang harus membersihkan semua input, tidak hanya input formulir web seperti formulir login. Mereka harus menghapus elemen kode berpotensi berbahaya seperti tanda kutip tunggal. Ini juga merupakan ide bagus untuk mematikan visibilitas kesalahan database di situs produksi Anda. Kesalahan database dapat digunakan dengan SQL Injection untuk mendapatkan informasi tentang database Anda Jika Anda menemukan kerentanan SQL Injection, misalnya menggunakan pemindaian Acunetix, Anda mungkin tidak dapat segera memperbaikinya. Misalnya, kerentanan mungkin dalam kode sumber terbuka. Dalam kasus seperti itu, Anda dapat menggunakan firewall aplikasi web untuk membersihkan input Anda untuk sementara Untuk mempelajari cara mencegah serangan SQL Injection dalam bahasa PHP, lihat. Mencegah Kerentanan SQL Injection pada Aplikasi PHP dan Memperbaikinya. Untuk mengetahui cara melakukannya di banyak bahasa pemrograman lain, lihat panduan Bobby Tables untuk mencegah SQL Injection Cara Mencegah Injeksi SQL (SQLi) – Tips UmumMencegah kerentanan SQL Injection tidaklah mudah. Teknik pencegahan khusus bergantung pada subtipe kerentanan SQLi, pada mesin database SQL, dan pada bahasa pemrograman. Namun, ada beberapa prinsip strategis umum yang harus Anda ikuti untuk menjaga keamanan aplikasi web Anda Langkah 1. Latih dan pertahankan kesadaranUntuk menjaga keamanan aplikasi web Anda, setiap orang yang terlibat dalam pembuatan aplikasi web harus menyadari risiko yang terkait dengan SQL Injections. Anda harus memberikan pelatihan keamanan yang sesuai untuk semua pengembang, staf QA, DevOps, dan SysAdmin Anda. Anda bisa mulai dengan merujuk mereka ke halaman ini Langkah 2. Jangan percaya masukan pengguna apa punPerlakukan semua input pengguna sebagai tidak tepercaya. Input pengguna apa pun yang digunakan dalam kueri SQL menimbulkan risiko Injeksi SQL. Perlakukan masukan dari pengguna yang diautentikasi dan/atau internal dengan cara yang sama seperti Anda memperlakukan masukan publik Langkah 3. Gunakan daftar putih, bukan daftar hitamJangan memfilter masukan pengguna berdasarkan daftar hitam. Penyerang yang cerdik hampir selalu menemukan cara untuk menghindari daftar hitam Anda. Jika memungkinkan, verifikasi dan filter input pengguna hanya menggunakan daftar putih yang ketat Langkah 4. Mengadopsi teknologi terbaruTeknologi pengembangan web lama tidak memiliki perlindungan SQLi. Gunakan versi terbaru dari lingkungan pengembangan dan bahasa serta teknologi terbaru yang terkait dengan lingkungan/bahasa tersebut. Misalnya, dalam PHP gunakan PDO, bukan MySQLi Langkah 5. Mempekerjakan mekanisme yang diverifikasiJangan mencoba membuat perlindungan SQLi dari awal. Sebagian besar teknologi pengembangan modern dapat menawarkan kepada Anda mekanisme untuk melindungi dari SQLi. Gunakan mekanisme seperti itu alih-alih mencoba menemukan kembali kemudi. Misalnya, gunakan kueri berparameter atau prosedur tersimpan Langkah 6. Pindai secara teratur (dengan Acunetix)SQL Injections dapat diperkenalkan oleh pengembang Anda atau melalui pustaka/modul/perangkat lunak eksternal. Anda harus secara teratur memindai aplikasi web Anda menggunakan pemindai kerentanan web seperti Acunetix. Jika Anda menggunakan Jenkins, Anda harus menginstal plugin Acunetix untuk memindai setiap build secara otomatis Bacaan lebih lanjutJenis Injeksi SQL Panduan untuk mencegah SQL Injection Pertanyaan yang sering diajukanApa itu Injeksi SQL?SQL Injection adalah kerentanan web yang disebabkan oleh kesalahan yang dilakukan oleh programmer. Ini memungkinkan penyerang mengirim perintah ke database yang berkomunikasi dengan situs web atau aplikasi web. Ini, pada gilirannya, memungkinkan penyerang mendapatkan data dari database atau bahkan memodifikasinya Lihat contoh langkah demi langkah tentang bagaimana Injeksi SQL terjadi Seberapa umum injeksi SQL?SQL Injection adalah kerentanan yang sangat tua – telah ditemukan pada tahun 1998. Namun, menurut penelitian tahun 2020 kami, 8 persen situs web dan aplikasi web memiliki kerentanan SQL Injection Baca laporan lengkap kami tentang kondisi keamanan web saat ini Seberapa berbahayakah Injeksi SQL?Serangan Injeksi SQL yang berhasil dapat menyebabkan kompromi lengkap dari sistem atau pencurian seluruh database. Misalnya, serangan SQL Injection pada 2019 menyebabkan pencurian data pajak lengkap 5 juta orang Baca lebih lanjut tentang serangan SQL Injection paling masif di tahun 2019 Bagaimana cara mendeteksi Injeksi SQL?Satu-satunya cara efisien untuk mendeteksi Injeksi SQL adalah dengan menggunakan pemindai kerentanan, sering disebut alat DAST (pengujian keamanan aplikasi dinamis). Acunetix dikenal top-of-the-line dalam mendeteksi SQL Injections dan kerentanan lainnya. Acunetix dapat menjangkau tempat pemindai lain gagal Cari tahu apa yang dapat dilakukan Acunetix Premium untuk Anda Bagaimana cara mencegah Injeksi SQL?Cara terbaik untuk mencegah Injeksi SQL adalah dengan menggunakan fungsi pemrograman aman yang membuat Injeksi SQL menjadi tidak mungkin. kueri berparameter (pernyataan yang disiapkan) dan prosedur tersimpan. Setiap bahasa pemrograman utama saat ini memiliki fungsi yang aman dan setiap pengembang hanya boleh menggunakan fungsi aman tersebut untuk bekerja dengan database Bagaimana cara membuat sistem MySQL saya aman?Praktik Terbaik Keamanan MySQL . Hapus Akun Default, Pemetaan Port, dan Pengaturan Lainnya. . Batasi Akses Jarak Jauh. . Berikan Pengguna Hanya Keistimewaan yang Mereka Butuhkan. . Gunakan Akun Non-Root. . Menjaga Server Secara Fisik Aman. . Pastikan Anda Menjaga Audit & Pemantauan yang Tepat. . Nilai Keamanan Basis Data Anda Secara Rutin Apa kemungkinan alasan gagal terhubung ke server database MySQL?biasanya berarti tidak ada server MySQL yang berjalan di sistem atau Anda menggunakan nama file soket Unix atau nomor port TCP/IP yang salah when trying to connect to the server. You should also check that the TCP/IP port you are using has not been blocked by a firewall or port blocking service.
Bagaimana cara mengamankan MySQL Windows?Mengamankan Server MySQL di Windows . Langkah 1. Instal MySQL pada Windows versi terbaru berbasis NT. . Langkah 2. Instal MySQL pada Sistem File NTFS. . Langkah 3. Instal MySQL di Mesin Mandiri. . Langkah 4. Instal MySQL Versi Produksi Terbaru. . Langkah 5. Amankan Akun Pengguna MySQL. . Langkah 6. Nonaktifkan Akses TCP/IP Apa keamanan sistem file di MySQL?1. Keamanan Sistem Operasi. Tugas sistem operasi adalah melindungi instalasi MySQL dan file-filenya dari akses eksternal ilegal . Singkatnya, ini berarti bahwa hanya proses MySQL dan administrator database yang diautentikasi yang dapat menyentuh instalasi MySQL. |