Cara Melindungi Situs WordPress Anda Terhadap Injeksi SQL

Diterbitkan: 2022-03-09

WordPress adalah salah satu platform pembuatan situs web yang paling banyak digunakan karena berbagai aplikasi potensialnya. Anda dapat membangun toko online, membuat blog tentang hobi favorit Anda, membuat komunitas melalui forum, atau mewakili perusahaan besar.

Namun bagaimanapun Anda menggunakannya, tanggung jawab utama adalah menjaga keamanan situs Anda dari peretas. Itulah mengapa penting untuk memahami cara mencegah serangan injeksi Structured Query Language (SQL).

Berita baiknya adalah ada banyak langkah yang dapat Anda ambil untuk melindungi situs WordPress Anda dari kode berbahaya ini. Mempelajari cara mendeteksi, menghapus, dan mencegah injeksi SQL dapat membantu Anda mengamankan data berharga secara efektif dan membuat Anda tidak terlalu rentan terhadap serangan.

Apa itu injeksi SQL dan bagaimana cara kerjanya?

Untuk memahami cara kerja injeksi, akan sangat membantu untuk mempelajari terlebih dahulu apa itu SQL. Ini adalah bahasa yang umum digunakan dalam pengembangan basis data.

Situs web Anda menggunakannya untuk mengambil informasi penting dari database Anda dan menghasilkan konten dinamis. Beberapa database SQL termasuk MySQL (situs WordPress), MongoDB, dan SQL Server.

Situs web WordPress Anda menggunakan database untuk mengelola data dan konten penting situs Anda, seperti halaman, postingan, dan komentar Anda. Ini mengatur informasi ini dalam tabel.

tampilan tabel di database WordPress

Basis data Anda adalah tempat penyimpanan data Anda yang paling sensitif. Oleh karena itu, setiap serangan yang mengeksposnya dapat memiliki konsekuensi yang parah.

Injeksi SQL (SQLI) adalah jenis metode peretasan yang digunakan penjahat dunia maya untuk menyusup dan memanipulasi basis data WordPress. Pada dasarnya, peretas dapat mengeksploitasi celah dalam pengkodean backend situs web dan memasukkan kode berbahaya ke bidang entri data.

Kode ini memungkinkan aktor jahat untuk mengeksekusi perintah SQL ke server database melalui permintaan web menggunakan string kueri, cookie, dan elemen <input>. Ini berarti mereka dapat membuat, mengakses, mengubah, dan menghilangkan data dari database WordPress Anda.

Ada banyak titik masuk yang berbeda di mana hal ini dapat terjadi. Bidang entri yang paling umum digunakan termasuk formulir pendaftaran, masuk, dan kontak, serta bilah pencarian dan keranjang belanja.

Katakanlah Anda memiliki formulir di situs web Anda di mana pengunjung dapat memasukkan nomor telepon mereka. Penjahat dunia maya dapat menggunakan bidang entri itu untuk memasukkan kode berbahaya yang meminta nama pengguna dan kata sandi admin.

Jenis injeksi SQL

Ada beberapa jenis injeksi SQL. Satu kategori adalah apa yang dikenal sebagai "in-band." Ini adalah jenis injeksi paling sederhana dan termasuk serangan berbasis kesalahan.

Dengan teknik ini, peretas menggunakan injeksi untuk mendapatkan detail tentang struktur database dan nama tabel. Misalnya, pesan kesalahan mungkin memberikan nama tabel yang disertakan dalam kueri. Kemudian peretas dapat menggunakan informasi ini untuk membuat serangan baru.

Jenis lainnya adalah apa yang disebut sebagai "injeksi SQL buta." Ini adalah saat penyerang mengirimkan berbagai pertanyaan ke database untuk mengetahui bagaimana situs menganalisis tanggapan. Melakukannya dapat membantu mereka menyelidiki respons terhadap kueri SQL untuk mengidentifikasi potensi kerentanan, dan meminta database untuk mengirimkan data ke sumber eksternal.

Seberapa umumkah injeksi SQL?

Sayangnya, serangan injeksi SQL lazim terjadi. Faktanya, menurut laporan yang diterbitkan oleh Akamai, antara 2017 dan 2019, sekitar dua pertiga serangan terhadap aplikasi perangkat lunak dikaitkan dengan injeksi SQL.

Laporan Statistik Kerentanan 2020 yang terpisah juga mengungkapkan bahwa injeksi SQL merupakan 42 persen dari kerentanan kritis yang paling umum.

Injeksi SQL adalah kemungkinan untuk situs web apa pun yang menggunakan database SQL, seperti situs berbasis WordPress, terutama yang memiliki bidang input seperti formulir kontak dan kotak pencarian.

Mengapa injeksi SQL berbahaya

Injeksi SQL berbahaya karena beberapa alasan. Pertama, mereka memberi peretas kesempatan untuk mencuri informasi sensitif, seperti kredensial masuk atau data pelanggan Anda.

Peretas tidak hanya dapat menggunakan injeksi SQL untuk mendapatkan dan mencuri data, tetapi mereka juga dapat menggunakannya untuk menghapus data tersebut. Ini berarti Anda berisiko kehilangan informasi pribadi dan penting yang digunakan untuk menjalankan situs web Anda.

Selain itu, ada risiko kerusakan reputasi dan hilangnya pendapatan. Pelanggaran data dapat merugikan bisnis Anda, dan Anda mungkin kehilangan kepercayaan dari pelanggan atau penggemar Anda.

Plus, serangan ini dapat menyebabkan Google memblokir situs Anda. Jika Anda masuk dalam daftar ini, banyak calon pengunjung akan menerima peringatan bahwa situs Anda tidak aman. Sebagian besar dari orang-orang ini akan kembali dan mungkin tidak akan pernah kembali. Selain itu, Google juga akan secara signifikan menurunkan peringkat pencarian Anda — yang dapat menyebabkan hilangnya lalu lintas organik jangka panjang yang besar yang sulit untuk dipulihkan.

Cara mendeteksi injeksi SQL

Ada beberapa tanda yang mungkin menunjukkan bahwa Anda telah menjadi korban serangan injeksi SQL. Salah satunya adalah Anda tiba-tiba menerima masuknya email melalui formulir kontak situs Anda. Indikator lainnya adalah jika Anda menerima popup, iklan, dan pesan kesalahan yang aneh, terutama jika mereka mengarahkan Anda ke situs web yang tampaknya tidak jelas.

Sayangnya, tanda-tanda serangan injeksi SQL tidak selalu begitu jelas. Seperti yang kami sebutkan sebelumnya, terkadang peretas ingin menggunakan suntikan untuk mencuri informasi daripada merusak situs web Anda. Oleh karena itu, mereka mungkin menggunakan metode yang lebih halus yang membuat deteksi lebih sulit.

Deteksi injeksi SQL dan alat pemindaian

Satu-satunya cara untuk mengetahui dengan pasti apakah Anda telah menjadi sasaran adalah dengan melakukan pemindaian pada situs web Anda. Untungnya, ada berbagai alat online yang dapat membantu Anda mendeteksi injeksi SQL di situs WordPress Anda.

Misalnya, Anda dapat menggunakan Pentest Tools untuk melakukan dua pemindaian gratis situs web Anda.

Beranda alat PenTest

Ada dua opsi: Pemindaian ringan atau Pemindaian penuh. Untuk yang terakhir, Anda harus meningkatkan ke paket berbayar. Cukup masukkan URL situs web Anda dan klik tombol Pindai target . Jika ada kerentanan, pemindaian akan mengungkapkannya.

Cara menghapus injeksi SQL dari situs WordPress Anda

1. Pulihkan cadangan

Pilihan terbaik Anda untuk menghapus injeksi SQL adalah memulihkan cadangan situs Anda. Jika Anda menggunakan Jetpack Backup, yang harus Anda lakukan adalah menggunakan log aktivitas untuk menentukan kapan serangan itu terjadi, lalu memulihkan cadangan dari sebelum titik itu. Situs Anda akan dikembalikan ke keadaan sebelum diretas.

Namun, penting untuk dicatat bahwa, dalam beberapa kasus, injeksi SQL dilakukan sedikit demi sedikit, seiring waktu. Anda mungkin perlu kembali cukup jauh untuk menemukan cadangan yang bersih, yang dapat mengakibatkan hilangnya data.

Dan meskipun memulihkan cadangan dapat membuat situs Anda aktif dan berjalan kembali, jika data sensitif dicuri, Anda masih harus berurusan dengan konsekuensi pelanggaran tersebut.

2. Gunakan layanan pembersihan situs web

Pilihan lainnya adalah menggunakan layanan pembersihan situs web pihak ketiga untuk memindai situs Anda dan memperbaiki injeksi SQL apa pun. Sucuri adalah salah satu opsi — cukup kirimkan situs web Anda ke tim mereka dan biarkan mereka yang mengurus semuanya. Karena mereka ahli, mereka dapat menghapus malware dari database Anda lebih efektif daripada rata-rata pengembang.

3. Lepaskan suntikan sendiri

Terakhir, jika Anda memiliki pengalaman mengelola dan bekerja dengan MySQL, Anda dapat membersihkan database secara manual. Namun, perhatikan bahwa ini adalah teknik lanjutan dan jika Anda tidak tahu apa yang Anda lakukan, membuat perubahan apa pun dapat menyebabkan masalah.

Bagaimana mencegah injeksi SQL di masa depan

Tidak ada cara untuk memastikan bahwa situs Anda 100 persen aman, tetapi ada langkah-langkah yang dapat Anda ambil untuk meminimalkan risiko serangan. Mari kita lihat delapan metode yang dapat Anda gunakan untuk mencegah injeksi SQL di WordPress.

1. Validasi (atau bersihkan) data Anda

Kunci untuk mencegah injeksi SQL di WordPress adalah mengamankan setiap bidang entri yang dapat digunakan untuk memasukkan data atau konten di situs web Anda. Ini termasuk bagian komentar dan formulir. Oleh karena itu, penting untuk memvalidasi dan membersihkan data yang dimasukkan ke dalam bidang ini setelah pengiriman.

Validasi input dan sanitasi memungkinkan Anda memeriksa perintah yang dikirimkan oleh pengguna. Sanitasi bahkan memungkinkan Anda mengubah perintah. Ini adalah cara yang efektif untuk memastikan bahwa perintah ini tidak berisi kode berbahaya atau rangkaian karakter.

Validasi memastikan bahwa informasi yang dimasukkan dalam formulir cocok dengan format yang diminta sebelum memproses permintaan. Misalnya, jika Anda memiliki bidang entri untuk alamat email, data tidak akan divalidasi jika simbol '@' tidak ada.

Cara termudah untuk membuat validasi untuk data formulir Anda adalah dengan menetapkan aturan untuk formulir Anda. Proses untuk melakukannya akan bergantung pada plugin tertentu yang Anda gunakan. Misalnya, jika Anda menggunakan Formidable Forms versi premium, Anda dapat menambahkan Format Masker Input kustom Anda sendiri untuk bidang teks.

menambahkan validasi ke bidang formulir di WordPress

Menambahkan persyaratan format input dapat membatasi risiko injeksi SQL. Sanitasi dapat membantu memastikan bahwa data yang dimasukkan aman untuk diproses setelah divalidasi.

Sebagian besar plugin formulir WordPress secara otomatis membersihkan data formulir. Namun, Anda dapat menambahkan langkah-langkah keamanan tambahan. Daripada jawaban terbuka, pertimbangkan untuk menggunakan menu tarik-turun dan opsi pilihan ganda. Anda juga dapat membatasi penggunaan karakter khusus.

2. Instal alat keamanan WordPress

Plugin keamanan WordPress Jetpack dapat memantau situs Anda dari kerentanan yang dapat menyebabkan injeksi SQL. Ini memberi Anda kesempatan untuk memperbaikinya sebelum seseorang mengambil keuntungan.

Dengan pemantauan waktu henti, Anda akan tahu begitu situs Anda turun sehingga Anda dapat bereaksi dengan cepat. Dan dengan pencadangan waktu nyata, Anda dapat memulihkan situs Anda secara penuh.

Ini juga menyediakan alat keamanan seperti:

  • Pemindaian malware untuk file WordPress Anda, bersama dengan perbaikan satu klik untuk sebagian besar masalah
  • Solusi anti-spam untuk melindungi komentar dan formulir kontak Anda
  • Perlindungan serangan brute force untuk mencegah peretas keluar

3. Perbarui situs web dan basis data Anda setiap saat

Menggunakan perangkat lunak dan alat yang sudah ketinggalan zaman dapat menimbulkan berbagai macam kerentanan di situs Anda untuk dieksploitasi oleh peretas. Inilah mengapa penting untuk memastikan bahwa Anda selalu memperbarui situs web WordPress Anda.

Saat ini, hampir setengah dari instalasi WordPress tidak menggunakan versi terbaru. Oleh karena itu, Anda mungkin ingin mempertimbangkan untuk mengaktifkan pembaruan otomatis untuk memastikan bahwa Anda selalu menjalankan versi terbaru WordPress.

Untuk melakukan ini untuk pembaruan Inti, Anda dapat menavigasi ke wp-config.php di direktori root situs web Anda. Selanjutnya, salin dan tempel cuplikan kode berikut ke file:

 define( 'WP_AUTO_UPDATE_CORE', true );

Anda dapat mengaktifkan pembaruan otomatis untuk plugin Anda dengan menavigasi ke Plugin layar dari dasbor admin Anda. Kemudian, klik Aktifkan Pembaruan Otomatis dari kolom paling kanan.

mengaktifkan pembaruan otomatis di WordPress

Untuk meminimalkan kerentanan, sebaiknya hapus plugin atau tema yang tidak digunakan dari situs Anda. Juga bijaksana untuk memperbarui versi SQL Anda. Jika Anda menggunakan cPanel untuk panel kontrol hosting, Anda dapat memperbarui perangkat lunak MySQL dari dasbor. Tergantung pada penyedia hosting Anda, Anda mungkin dapat mengaktifkan pembaruan SQL otomatis.

4. Ubah awalan database WordPress Anda

Secara default, setiap kali Anda menginstal WordPress, CMS menggunakan “wp_” sebagai awalan basis datanya. Kami sangat menyarankan untuk mengubah ini menjadi sesuatu yang lain, karena peretas dapat menggunakannya untuk mengeksploitasi kerentanan melalui injeksi SQL.

Sebelum memulai, Anda harus mencadangkan database Anda. Dengan cara ini, jika terjadi kesalahan, Anda memiliki versi yang aman untuk dipulihkan.

Selanjutnya, sambungkan ke situs Anda melalui klien FTP atau Manajer File host Anda dan jelajahi file wp-config.php , yang terletak di direktori root situs Anda. Di file, cari baris table_prefix, lalu ubah "wp_" menjadi yang lain:

 $table_prefix  = 'wp_a12345_';

Setelah selesai, simpan file tersebut. Itu dia!

5. Gunakan firewall

Strategi lain yang dapat Anda gunakan untuk melindungi dari injeksi SQL adalah memasang firewall. Ini adalah sistem keamanan jaringan yang membantu Anda memantau dan mengontrol data yang masuk ke situs WordPress Anda. Ini dapat menangkap dan menyaring kode berbahaya, termasuk yang berasal dari serangan injeksi SQL.

Ada berbagai macam alat firewall WordPress yang dapat Anda gunakan. Beberapa opsi populer termasuk Wordfence dan Sucuri. Alat-alat ini tidak akan mencegah penyerang mengirimkan perintah, tetapi mereka dapat membantu memblokir mereka agar tidak benar-benar mengakses situs Anda.

6. Sembunyikan versi WordPress yang Anda gunakan

Memiliki versi situs WordPress Anda yang tersedia untuk umum dapat memudahkan penyerang untuk mengeksploitasi kerentanan yang diketahui, karena setiap versi dilengkapi dengan setnya sendiri. Oleh karena itu, untuk melindungi situs Anda, sebaiknya sembunyikan versi yang Anda gunakan.

Melakukannya cepat dan mudah. Untuk memulai, cukup salin cuplikan kode berikut:

 remove_action('wp_head', 'wp_generator');

Selanjutnya, navigasikan ke file functions.php dari tema WordPress Anda saat ini. Anda dapat melakukannya langsung dari Editor Tema di WordPress, menggunakan klien FTP, atau menggunakan Pengelola File host Anda. Tempel kode di dalam file, lalu simpan perubahan Anda.

7. Hilangkan fungsionalitas database yang tidak perlu

Semakin banyak fungsionalitas yang dimiliki database WordPress Anda, semakin rentan untuk diserang. Untuk meminimalkan risiko injeksi SQL, pertimbangkan untuk menormalkan database Anda dan menghilangkan fungsi dan konten yang tidak perlu.

Singkatnya, normalisasi database mengacu pada proses mengatur data Anda. Tujuan melakukan ini adalah untuk menghilangkan data yang berlebihan dalam database Anda dan memastikan bahwa semua dependensi data masuk akal. Anda dapat melakukan ini dengan meletakkan database Anda di First Normal Form.

Jika Anda menginginkan opsi yang lebih ramah-pemula untuk membersihkan database WordPress, Anda dapat menggunakan plugin. Ada beberapa opsi solid untuk dipilih, seperti WP-Optimize.

Plugin freemium ini membantu Anda membersihkan database tanpa perlu menjalankan perintah SQL secara manual melalui phpMyAdmin. Sebagai gantinya, Anda dapat menggunakannya untuk mengoptimalkan database Anda langsung dari dashboard WordPress Anda.

opsi pengoptimalan tabel database

Ini menghapus semua informasi yang tidak perlu dari database Anda, termasuk sampah dan komentar yang tidak disetujui. WP-Optimize juga memungkinkan Anda mendefrag tabel database MySQL Anda dengan satu klik.

8. Batasi akses dan izin pengguna

Anda dapat menetapkan berbagai peran untuk pengguna WordPress di situs web Anda. Ini dapat berkisar dari pelanggan hingga administrator. Dengan setiap peran, Anda dapat mengontrol berapa banyak akses yang diberikan dan "kemampuan" mana yang diberikan.

Untuk membantu memperkuat keamanan Anda, sebaiknya batasi jumlah peran dengan akses admin penuh dan izin pengguna. Semakin sedikit orang yang dapat mengubah dan memasukkan data, semakin kecil kemungkinan Anda menghadapi serangan injeksi SQL.

Untuk menyesuaikan peran dan izin pengguna di WordPress, Anda dapat menavigasi ke Users → All Users .

Pengguna WordPress di dasbor

Kemudian, klik tautan Edit di bawah nama pengguna yang ingin Anda batasi akses dan izinnya. Di layar berikutnya, Anda dapat mengubah peran mereka menggunakan menu Peran dropdown.

Saat mengelola peran pengguna WordPress Anda, kami juga menyarankan untuk menghapus akun yang tidak lagi digunakan. Menghilangkan peran yang sudah ketinggalan zaman dapat meminimalkan kerentanan Anda.

9. Hindari menggunakan plugin nulled

Plugin nulled adalah alat premium yang telah dicuri dan ditawarkan secara gratis. Meskipun mereka mungkin tampak seperti masalah besar, Anda tidak hanya merugikan pengembang asli dengan tidak membayar mereka untuk pekerjaan mereka, Anda juga berisiko diretas.

Plugin null sering kali penuh dengan kode berbahaya dan pintu belakang yang memberi peretas gerbang mudah ke situs Anda. Hindari mereka dengan cara apa pun dan, sebagai gantinya, gunakan plugin dari sumber yang memiliki reputasi baik.

Lindungi situs WordPress Anda dari injeksi SQL

Untuk melindungi situs web dan data Anda dari ancaman penjahat dunia maya, penting untuk mengetahui beberapa metode paling umum yang digunakan untuk mendapatkan akses ke situs Anda. Ketika datang untuk memperkuat keamanan database Anda, ini berarti berpengalaman dalam injeksi SQL.

Seperti yang telah kita bahas dalam posting ini, injeksi SQL dapat memiliki efek merusak pada situs WordPress Anda, mulai dari paparan data sensitif hingga hilangnya konten dan pendapatan. Untungnya, ada beberapa langkah yang dapat Anda ambil untuk mendeteksi, menghapus, dan mencegah serangan injeksi.

Tidak ada situs web yang sepenuhnya aman, tetapi dengan mengikuti tip dan teknik di atas, Anda dapat secara signifikan mengurangi kemungkinan menjadi korban injeksi SQL.