WordPress adalah platform website berbasis CMS (Content Management System) yang saat ini paling populer dan digemari untuk membuat sebuah website. Baik oleh developer website sendiri ataupun oleh user/pengguna. Hal ini dikarenakan wordpress mempunyai fitur-fitur yang fleksibel dan dapat dengan mudah di custom, baik secara tampilan maupun fungsinya.

.htaccess adalah file text sederhana dalam format ASCII yang terdapat pada server sebuah website. Biasanya terletak pada root directory pada sebuah file manager website, meskipun sebenarnya bisa ditempatkan atau ditaruh di folder atau direktori mana pun. Pada umumnya kita dapat menggunakan file .htaccess untuk merubah satu atau beberapa konfigurasi atau pengaturan pada server web apache.

File .htaccess seharusnya mempunyai permission attribute dengan setting 644 (rw-r-r), hal ini bertujuan agar server dapat mengakses file .htaccess, tapi mencegah user untuk mengakses file .htaccess dari browser mereka.

Fungsi File .htaccess

Ada beberapa fungsi yang dapat dilakukan dengan file .htaccess, antara lain:

  • Mencegah pengunjung melakukan browsing direktori (mengakses folder-folder tertentu)
  • Mengubah default halaman index pada folder tertentu
  • Memberi proteksi password pada direktori
  • Me-redirect pengunjung dari satu halaman ke halaman yang lainnya.
  • Mencegah hot-linking gambar dari website
  • Dan lain sebagainya

Dengan mempunyai file .htaccess dengan konfigurasi yang benar, anda dapat meningkatkan keamanan website dan mengurangi “vulnerabilities” atau kerentanan pada website berbasis WordPress. Biasanya tujuan utama mengkustom file .htaccess adalah untuk mencegah website kena hack, tapi tidak hanya itu saja, seperti yang saya sampaikan di atas, file .htaccess juga dapat digunakan untuk tujuan lain, misal managemen redirect, menyetting cache, dan lain-lain.

Pada tulisan kali ini, anda dapat menemukan beberapa kode snippets, sebagian besar kode di bawah adalah untuk meningkatkan keamanan website dan sebagian adalah untuk fitur yang berguna lainnya.

Sebelum mencoba untuk mengkustom file .htaccess anda, sebaiknya anda melakukan backup file .htaccess anda yang lama, agar jika ada hal yang tidak diinginkan, atau ada kesalahan dalam penulisan kode snippets, anda dapat dengan mudah melakukan restore file .htaccess anda yang lama ke server web anda.

Atau jika anda adalah orang yang awam atau tidak familiar dengan file .htaccess, saya rekomendasikan untuk menggunakan Plugin WordPress BulletProof Security yang sangat mudah dan cukup bagus untuk konfigurasi .htaccess tanpa mengetahui kode snippets.

Membuat File .htaccess Default Pada WordPress

.htaccess bekerja pada basis per-direktori yang berarti bahwa setiap direktori dapat memiliki sendiri file .htaccess meskipun seperti saya sampaikan di atas, bahwa kebanyakan file .htaccess ditempatkan pada root directori. Sangat mungkin bisa terjadi bahwa web wordpress anda tidak / belum mempunyai file .htaccess. Jika anda tidak menemukan file .htaccess pada website anda, buatlah file text kosong pada root direktori dan beri nama .htaccess

Di bawah ini adalah kode default file .htaccess pada WordPress, Anda juga dapat mengeceknya pada WordPress Codex.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Pada baris yang diawali dengan kode # adalah hanya catatan komen, dan tidak berpengaruh terhadap kode itu sendiri. Itu hanya pengkodean untuk catatan developer awal dimulainya kode untuk fungsi tertentu. Jangan mengubah apapun kode diantara # BEGIN WordPress dan # END WordPress. Jika anda ingin menambahkan kode untuk fungsi tertentu, silakan tambahkan di bawah kode default WordPress tersebut.

Semua kode yang anda temukan di bawah ini adalah kode dasar file .htaccess dari wordpress.

1. Menolak akses pada semua file .htaccess

Kode di bawah ini untuk menolak semua akses ke file-file .htaccess yang ada pada server website anda (jika file .htaccess anda lebih dari satu). Hal ini untuk mengantisipasi orang yang ingin melihat konfigurasi server web anda.

# Denies access to all .htaccess files
<Files ~ "^.*\.([Hh][Tt][Aa])">
Order Allow,Deny
Deny from all
Satisfy all
</Files>

 

2. Melindungi Konfigurasi WordPress Anda

FIle wp-config.php memuat semua konfigurasi WordPress anda, termasuk informasi login dan password database server website anda. Anda dapat memblokir orang lain dan memeberikan hak akses terhadap admin untuk mengaksesnya.

Jika Anda juga dapat memberikan hak akses terhadap orang berdasarkan IP addressnya dengan comment out baris # Allow from xx.xx.xx.xxx (buang tanda # pada bagian depan) dan masukkan IP address admin pada tulisan xx.xx.xx.xxx (ganti dengan nomer IP Address)

# Protects wp-config
<Files wp-config.php>
Order Allow,Deny
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</Files>

 

3. Mencegah serangan XML-RPC DDoS

WordPress mendukung XML-RPC secara default, interface ini memungkinkan untuk melakukan publishing secara remote. Namun demikian, fitur yang hebat ini juga menimbulkan kerentanan terbesar bagi WordPress karena hacker bisa saja memanfaatkan ini untuk mengirimkan serangan DDoS.

Jika Anda tidak menggunakan fitur ini, lebih baik anda me-non-aktifkannya. Seperti snippets di atas, anda juga dapat melakukan pengecualian dengan memberikan IP Address tertentu untuk memberikan hak akses. Anda dapat memberikan pengecualian dengan comment out # Allow from xx.xx.xx.xxx dan menggantinya dengan nomer IP Address admin. Ingat anda dapat memberikan akses kepada lebih dari 1 IP Adrress.

# Protects XML-RPC, prevents DDoS attack
<FilesMatch "^(xmlrpc\.php)">
Order Deny,Allow
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</FilesMatch>

 

4. Melindungi Admin Area pada website wordpress anda

Adalah sebuah ide yang bagus juga untuk melindungi admin area website anda dengan memberikan hak akses hanya kepada administrator. Di sini anda jangan lupa untuk menambahkan setidaknya satu “allow” exception. jika tidak Anda tidak akan dapat mengakses admin Anda sama sekali.

# Protects admin area by IP
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
Order Deny,Allow
Deny from all
Allow from xx.xx.xx.xxx
Allow from yy.yy.yy.yyy
</LIMIT>

 

5. Mencegah Akses Direktori

Kebanyakan situs website WordPress tidak mendisable akses direktori, itu berarti setiap orang dapat menelusuri folder-folder dan file pada server website, termasuk data-data media upload dan file plugin. Bisa dikatakan ini adalah kerentanan keamanan website wordpress yang cukup besar juga.

Berikut ini anda dapat melihat bagaimana direktori wordpress jika diakses melalui browser.

directory listing

Untungnya, anda hanya membutuhkan satu baris kode snippets untuk memblokir fitur ini. Dengan kode snippets ini akan menampilkan pesan 403 error kepada siapa saja yang bermaksud mengakses direktori.

# Prevents directory listing
Options -Indexes

 

6. Mencegah Pelacakan Username

Jika permalink WordPress diaktifkan, akan sangat dengan mudah melacak username dengan melihat penulis sebuah postingan (termasuk username admin. Dengan mengetahui usernamenya kemudian dapat digunakan untuk melakukan serangan “brute force

Masukkan kode di bawah ini ke dalam file .htaccess tersebut untuk mencegah pelacakan username.

# Prevents username  enumeration
RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]

 

7. Memblokir Spammer dan Bots

Kadang kalanya Anda mungkin ingin mungkin ingin membatasi akses dari alamat IP tertentu. Kode sederhana ini adalah cara yang mudah untuk memblokir spammer dan bot yang Anda sudah tahu.

# Blocks spammers and bots
<Limit GET POST>
Order Allow,Deny
Deny from xx.xx.xx.xxx
Deny from yy.yy.yy.yyy
</Limit>
Allow from all

 

8. Mencegah Image Hotlinking

Meskipun bukan ancaman keamanan, image hotlinking adalah hal yang masih sangat mengganggu. Mereka dapat dengan mudah menggunakan gambar anda tanpa ijin, dan bahkan menyematkan gambar tersebut pada website mereka. Jadi mereka tidak menguploadnya pada website mereka, tapi hanya meng”embed” gambar tersebut ke website mereka, jadi jika ada pengunjung yang mengakses mereka, gambar yang ada pada server website kita bisa tampil di web mereka, dengan demikian bandwith website kita akan terpakai.

Nah, dengan beberpa baris kode di bawah ini anda dapat melindungi situs anda dari image hotlinking;

# Prevents image hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite2.com [NC]
RewriteRule \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ - [NC,F,L]

 

9. Membatasi Akses Langsung Ke File Plugin & Tema

Hal yang berbahaya jika seseorang langsung memanggil file plugin dan theme wordpress anda, apakah itu terjadi secara tidak sengaja atau oleh penyerang berbahaya. Potongan kode ini berasal dari Acunetix, sebuah situs web perusahaan keamanan; Anda dapat membaca lebih lanjut tentang kerentanan ini dalam posting blog mereka.

# 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]

 

10. Menyeting Redirect Secara Permanen

Anda dapat dengan mudah menangani pengalihan / redirect secara permanen dengan .htaccess. Pertama Anda harus menambahkan URL lama, kemudian ikuti URL baru yang menunjuk ke halaman yang Anda ingin redirect.

# Permanent redirects
Redirect 301 /oldurl1/ http://yoursite.com/newurl1
Redirect 301 /oldurl2/ http://yoursite.com/newurl2

 

11. Mengarahkan Pengunjung Ke Halaman Maintenance

Jika anda sedang memperbaiki, atau mengadakan maintenance terhadap website anda, ada baiknya memberikan informasi kepada pengunjung anda bahwa website sedang dalam perbaikan (maintenance). Anda harus membuat halaman terpisah, bisa dalam bentuk HTML (misalnya maintenance.html). Nah dengan kode snippets berikut ini, pengunjung website anda akan diarahkan menuju ke maintenance.html saat mereka mengakses website anda. Dengan demikian mereka akan mengetahui bahwa website sedang dalam perbaikan.

# Redirects to maintenance page
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=503,L]
</IfModule>

 

12. Membatasi Semua Akses ke Direktori WP Includes

Direktori /wp-includes/ berisi file WordPress inti yang diperlukan untuk CMS untuk bekerja. Tidak ada ada konten, plugin, tema atau apa pun yang diperlukan pengguna untuk mengakses di sini. Jadi untuk menambah keamanan adalah membatasi semua akses ke direktori tersebut.

# Blocks all wp-includes folders 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>

 

13. Blokir Cross-Site Scripting (XSS)

Kode snippets ini dari WP Mix dan untuk melindungi website anda dari serangan XSS, yaitu sebuah serangan dengan inject / menyuntikkan file atau script agar supaya dapat memodifikasi file global maupun file-file tertentu.

# 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>

 

14. Mengaktifkan Browser Caching

Seperti yang saya sebutkan sebelumnya, .htaccess tidak hanya baik untuk alasan keamanan dan pengalihan tetapi juga dapat membantu Anda mengelola cache. Snipet kode di bawah ini adalah dari Elegant Themes dan itu memungkinkan browser caching dengan memungkinkan pengunjung untuk menyimpan jenis file tertentu, sehingga waktu berikutnya mereka kunjungi mereka tidak perlu men-download lagi.

# Enables browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

 

15. Menyetting Halaman Error Secara Kustom

Anda dapat menggunakan .htaccess untuk mengatur halaman error secara kustom di situs WordPress Anda. Agar metode ini bekerja, Anda juga perlu untuk membuat halaman error secara kustom (contohnya: custom-403.html, custom-404.html) dan meng-uploadnya ke folder root Anda.

Anda dapat mengatur halaman error kustom untuk setiap kesalahan kode status HTTP (4XX dan 5XX status kode) yang Anda inginkan.

# Sets up custom error pages
ErrorDocument 403 /custom-403.html
ErrorDocument 404 /custom-404.html

 

Demikianlah 15 kode snippets .htaccess yang mungkin berguna untuk website wordpress Anda. Jika anda merasa artikel ini bermanfaat, jangan lupa untuk membagikannya di media sosial dan siapa tahu saja ada teman anda yang sedang membutuhkan untuk website wordpress mereka.

Pin It on Pinterest