htaccess untuk Melindungi dari WordPress SQL Injections

WordPress SQL Injections adalah metode peretasan yang umum. Sering digunakan untuk menyisipkan malware dan tautan berisi spam di situs web Anda. Dalam hal melindungi situs WordPress Anda, ini adalah ancaman yang harus Anda siapkan! Sangat penting untuk memiliki rencana keamanan WordPress yang baik. Pada postingan kali ini saya akan menjelaskan lebih detail apa itu SQL injection dan bagaimana Anda dapat meminimalkan hal tersebut terjadi pada website Anda.

Apa itu injeksi SQL?
Peretas dapat masuk ke WordPress dengan berbagai cara, tetapi seperti yang sudah Anda duga, nama injeksi SQL memberi kita petunjuk tentang bagaimana peretasan ini dilakukan atau di mana tepatnya peretasan ini ditargetkan.

WordPress Database Security
WordPress mengandalkan PHP dan database MySQL untuk berfungsi. Banyak data situs web Anda disimpan dalam database MySQL dan digunakan ketika orang mengunjungi situs Anda. Kode PHP digunakan untuk memanggil entri dalam database.

Bagaimana cara orang atau bot meretas database WordPress?
Singkatnya, SQL Injection dapat terjadi di mana pun Anda memiliki elemen formulir di situs Anda. Ini bisa berupa:

  1. Contact forms
  2. Subscription forms
  3. Login Forms
  4. Search Bars dan banyak kolom masukan lainnya.

Bahkan kerentanan terkecil pun dapat membuat database Anda terbuka lebar terhadap serangan SQL! Peretas pada dasarnya mencari situs dengan kerentanan, ketika mereka menemukannya, yang harus mereka lakukan hanyalah menggunakan perintah SQL berbahaya alih-alih entri formulir yang valid dan hanya itu!

Pikirkan tentang contact form Anda, misalnya. Jika Anda memiliki kolom nomor telepon kontak, maka yang Anda ingin orang masukkan hanyalah angka, tanpa huruf atau karakter lain. Jika Anda tidak menyiapkan kolom formulir dengan benar atau tema atau plugin Anda mengabaikan hal ini, maka peretas dapat memasukkan apa pun yang mereka suka ke dalam kolom tersebut, termasuk kode berbahaya!

Jenis Injeksi SQL
Umumnya ada dua jenis SQL Injection utama atau lebih tepatnya dua alasan utama mengapa penyerang menggunakan SQL Injection.

Untuk mendapatkan informasi sensitif – SQLI klasik
SQL Injection semacam ini pada dasarnya mengembalikan informasi sensitif ke browser peretas. Mereka akan menggunakan formulir di situs Anda untuk menanyakan database. Ini kemudian mengungkapkan informasi tentang database Anda, struktur dan isinya. Mereka kemudian dapat menggunakan informasi ini untuk melancarkan serangan ke situs web Anda.

Untuk menjalankan tindakan database – Blind SQLI
Seperti namanya, Blind Injection tidak bertujuan untuk mengembalikan data apa pun, melainkan menjalankan tindakan database seperti menghapus, mengubah, atau menambahkan tabel.

Anda mungkin menemukan bahwa Anda telah menjadi korban salah satu atau kedua WordPress SQL Injections, mereka mungkin telah menghapus tabel wp_users jadi sekarang Anda tidak dapat mengakses admin situs web Anda. Mereka mungkin telah mengumpulkan informasi sensitif tentang database Anda dan menambahkan kode berbahaya, malware, tautan berisi spam, pengalihan, dan pop-up ke situs Anda.

Mengapa WordPress tidak memblokir ini sebagai standar?
WordPress sebagai sebuah platform sebenarnya sangat aman, dan mereka menangani keamanan semacam ini dengan sangat serius. WordPress merilis pembaruan keamanan dan perbaikan bug setiap saat. WordPress memang menguasai sekitar 34% internet saat ini, yang berarti ini adalah target besar bagi peretas yang mengatakan bahwa WordPress melakukan pekerjaan yang sangat baik dalam menjaga keamanan perangkat lunaknya.

Titik lemahnya seringkali terletak pada tema dan plugin, itulah sebabnya rencana keamanan dan pemeliharaan WordPress yang ketat sangat penting. Plugin dan tema ditinggalkan, atau pembuatnya tidak sadar akan keamanan dan tidak menambal kerentanan dengan sangat cepat. Misalnya plugin RichReviews yang saat ini telah dihapus dari repositori WordPress karena tidak aman. Hal ini dilaporkan oleh Wordfence dan telah menjadi rentan selama beberapa waktu. Masalah khusus dengan plugin ini adalah plugin ini terbuka untuk XSS Melalui Pembaruan Opsi Plugin yang Tidak Diautentikasi. Peretas mengeksploitasi ini untuk menyuntikkan kode maliklan ke situs. Jadi seperti yang Anda lihat, memastikan situs Anda aman dan selalu diperbarui sangatlah penting.

Inilah yang sering dieksploitasi oleh peretas. Inilah sebabnya kami akan selalu memberitahu semua orang untuk memiliki tema dan plugin sesedikit mungkin dan terus memperbaruinya setiap saat. Jika tema atau plugin tidak lagi didukung atau belum diperbarui selama beberapa waktu, sebaiknya cari alternatif.

Cara Mencegah SQL Injection

Sebelum melangkah lebih jauh, pastikan Anda mengambil cadangan database dan file situs Anda. Sangat penting bagi Anda untuk memiliki salinan situs yang berfungsi sebelum melakukan perubahan apa pun, sehingga jika situs Anda rusak atau terjadi masalah, Anda dapat memulihkannya dengan mudah.

  1. Gunakan Plugin dan Tema Tepercaya
    Seperti disebutkan di atas, ada banyak cara yang bisa dilakukan peretas untuk masuk, jadi memastikan Anda mencakup semua basis adalah yang terbaik. Gunakan hanya pembuat plugin dan tema tepercaya, JANGAN PERNAH menggunakan plugin atau tema null atau bajakan!
  2. Pastikan Perangkat Keras Anda Aman
    Pastikan komputer yang Anda gunakan untuk mengakses situs Anda juga aman dengan pembaruan terkini dan perangkat lunak anti-virus.
  3. Pastikan Pengaturan Hosting Anda Aman
    Terlalu sering orang mengabaikan keamanan hosting mereka. Kebanyakan memilih host bersama yang murah tanpa terlalu memperhatikan Keamanan WordPress Anda. Apa pun yang Anda lakukan di tempat lain di situs web Anda, jika hosting dan/atau server Anda tidak aman maka Anda hanya membuang-buang waktu.
  4. Pertahankan Form Entry Fields Minimal & Pengaturan yang Benar
    Bidang formulir dan masukan adalah titik akses utama untuk SQL Injection, jadi gunakan hanya apa yang Anda perlukan dan pastikan Anda mengaturnya dengan benar. Jika suatu bidang hanya memerlukan nomor telepon, maka izinkan saja bidang tersebut untuk menerima nomor.
  5. Gunakan Plugin Keamanan yang Baik dan WAF
    Anda harus menggunakan web application firewall (WAF) yang bagus dan plugin pemantauan keamanan. Hal ini sering kali mengingatkan Anda akan adanya masalah sehingga Anda dapat berupaya memperbaiki atau memblokirnya sebelum hal besar terjadi. Kami merekomendasikan Wordfence atau Sucuri tetapi masih banyak yang lain.
  6. Manfaatkan Aturan .htaccess Untuk Melindungi Dari Injeksi SQL WordPress
    Jika Anda menggunakan server Apache maka Anda dapat menggunakan file .htaccess untuk memblokir beberapa upaya injeksi SQL. Ini tidak menjamin 100% Anda tidak akan pernah diserang tetapi dapat berguna dalam meminimalkan injeksi SQL.

Di bawah ini kami telah membuat daftar aturan .htaccess terbaik untuk memperkuat situs WordPress Anda.

Aturan htaccess Untuk Melindungi Dari WordPress SQL Injection & Memperkuat WordPress

  1. Alihkan Semua Http ke Https
    Jika Anda memiliki sertifikat SSL maka Anda mungkin ingin mengalihkan semua lalu lintas tidak aman (HTTP) ke https. Anda dapat melakukan ini dengan menambahkan kode di bawah ini ke file .htaccess di root instalasi WordPress Anda. Jika Anda tidak memiliki file ini di root, Anda dapat membuatnya lalu salin dan tempel kode ini ke dalam file. Setelah Anda selesai melakukannya, simpan dan unggah ke root situs web Anda.

    #Redirect http to https
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  2. Blokir Bot Jahat
    Ada beberapa bot yang diketahui buruk dan sebaiknya diblokir saja. Salin kode ini ke file .htaccess root situs web Anda.

    #Block bad hackers
    SetEnvIfNoCase User-Agent "^libwww-perl*" block_bad_bots
    Deny from env=block_bad_bots
  3. Nonaktifkan Penjelajahan Direktori
    Jika Anda tidak memblokir penelusuran direktori maka peretas cukup memasukkan URL seperti situs web Anda.com/wp-includes/ dan melihat semua file dan informasi situs Anda. Ini adalah risiko keamanan yang besar dan Anda harus segera mematikannya. Anda dapat melakukan ini dengan menambahkan kode berikut ke file root .htaccess Anda.

    # Disable directory browsing
    Options All -Indexes
  4. Tolak Akses Ke File
    Mengingat kami melakukan semua perubahan pada file .htaccess, maka masuk akal jika kami memblokir akses ke file tersebut sehingga tidak ada yang dapat melihat aturan apa yang telah kami masukkan di sana! Selain itu, kami harus mengunci beberapa file lain seperti file wp-config Anda yang menyimpan semua info login database Anda!

    Lakukan ini dengan menambahkan di bawah ini ke file .htaccess root situs Anda. Ini akan memblokir akses ke file .htaccess mana pun di situs Anda yang disarankan.

    # Deny access to all .htaccess files
    <files ~ "^.*\.([Hh][Tt][Aa])">
    order allow,deny
    deny from all
    satisfy all
    </files>

    # Deny access to readme.html
    <files readme.html>
    Order allow,deny
    Deny from all
    </files>

    # Deny access to license.txt
    <files license.txt>
    Order allow,deny
    Deny from all
    </files>

    # Deny access to wp-config.php file
    <files wp-config.php>
    order allow,deny
    deny from all
    </files>

    # Deny access to error_log
    <files error_log>
    Order allow,deny
    Deny from all
    </files>
  5. Blokir Akses Ke wp-includes Folder Dan File
    Folder wp-includes adalah bagian penting dari perangkat lunak WordPress dan menampung sebagian besar file situs Anda. Hanya itu yang ada di folder ini. Unggahan Anda sendiri, plugin dan tema dll tidak masuk ke sana jadi sebenarnya tidak ada yang memerlukan akses ke folder wp-include, bahkan Anda pun tidak! Gunakan kode di bawah ini di file .htaccess root situs web Anda untuk memblokir akses ke folder dan file wp-includes.

    # Deny access to wp-includes folder and files
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^wp-admin/includes/ - [F,L]
    RewriteRule !^wp-includes/ - [S=3]
    RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
    RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
    RewriteRule ^wp-includes/theme-compat/ - [F,L]
    </IfModule>
  6. Blokir cross-site scripting (XSS)
    Cuplikan kode ini memblokir beberapa serangan XSS yang umum, terutama injeksi skrip dan upaya untuk mengubah variabel. Gunakan kode di bawah ini di file .htaccess root situs web Anda untuk memblokir serangan XSS umum ini.

    # Blocks some XSS attacks
    <IfModule mod_rewrite.c>
    RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    RewriteRule .* index.php [F,L]
    </IfModule>
  7. Batasi Akses Langsung Ke Plugin & Tema file PHP
    Secara umum, tidak ada alasan mengapa, siapa pun kecuali Anda memerlukan akses langsung ke file plugin dan tema. Cuplikan ini menonaktifkan panggilan langsung ke file tema dan plugin. Cukup tambahkan ini ke file .htaccess root situs web Anda.

    # Restricts access to PHP files from plugin and theme directories
    RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
    RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
    RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
    RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
    RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
    RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]
  8. Melindungi Terhadap SQL Injection
    Yang terakhir adalah perlindungan terhadap SQL Injection di WordPress. Penting untuk dicatat lagi bahwa ini tidak akan membuat Anda 100% terlindungi selamanya, jadi jangan gunakan kode ini begitu saja dan berpikir hanya itu saja. Anda harus selalu memantau keamanan Anda setiap saat. Namun ini setidaknya akan memblokir beberapa upaya SQL Injection yang paling umum. Masukkan kode ini ke file .htaccess root Anda.

    # Protect Against SQL Injection
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC]
    RewriteRule ^(.*)$ - [F,L]
    RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR]
    RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]
    RewriteCond %{QUERY_STRING} tag\= [NC,OR]
    RewriteCond %{QUERY_STRING} ftp\:  [NC,OR]
    RewriteCond %{QUERY_STRING} http\:  [NC,OR]
    RewriteCond %{QUERY_STRING} https\:  [NC,OR]
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
    RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC]
    RewriteCond %{HTTP_COOKIE} !^.*WordPress_logged_in_.*$
    RewriteRule ^(.*)$ - [F,L]
    </IfModule>
  9. Pemblokiran Eksekusi Kode PHP Dengan Aturan .htaccess
    Selain aturan di atas, Anda juga dapat menghentikan eksekusi kode PHP dalam folder tertentu seperti folder wp-content/uploads dan wp-includes/. Tergantung pada pengaturan tema dan plugin Anda, ini mungkin berfungsi atau mungkin merusak hal-hal tertentu. Anda dapat mencobanya dan melihat bagaimana hasilnya. Jika menghasilkan kesalahan, hapus saja file tersebut.

    Blokir Eksekusi PHP Di Folder wp-include
    Untuk ini, Anda perlu membuat file .htaccess baru dengan kode di bawah ini. File ini kemudian harus diunggah ke direktori wp-includes.

    # Protect Against php execution
    <Files *.php>
    deny from all
    </Files>
    Blokir Folder wp-content/uploads Eksekusi PHP
    Secara umum, Anda tidak boleh memiliki kode PHP di folder unggahan Anda karena folder tersebut digunakan untuk menyimpan gambar Anda. Kode di bawah ini pada dasarnya mengizinkan jenis file di bawah ini tetapi tidak mengizinkan eksekusi PHP. Sekali lagi ini harus berupa file .htaccess baru dengan kode di bawah ini kemudian diunggah ke direktori wp-content/uploads.

    # Disable access to all file types except the following
    Order deny,allow
    Deny from all
    <Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$">
    Allow from all
    </Files>

 

  • Security, Wordpress
  • 0 Users Found This Useful
Was this answer helpful?

Related Articles

Bagaimana melindungi WordPress dari serangan XML-RPC

XML-RPC adalah protokol remote jarak jauh. Sesuai namanya, ia menggunakan XML (Extensible Markup...

Pembaruan Otomatis WordPress

Banyak pengguna bertanya kepada kami bagaimana cara mengaktifkan pembaruan otomatis di WordPress....

Blokir bot jahat melalui .htaccess

Apakah Anda melihat banyak lalu lintas ke situs Anda dari bot yang buruk? Jika Anda memiliki...

Cara yang benar menginstal WordPress melalui Softaculous

Menginstal WordPress melalui sistem sekali klik kami sangat mudah dilakukan. Untuk melakukan ini,...

Plugin WordPress: Sahabat Terbaik dan Musuh Terburuk Anda

Salah satu keluhan yang paling sering kami dapatkan adalah bahwa situs web seseorang lambat atau...

Powered by WHMCompleteSolution