Mengamankan WordPress Dengan Htaccess ini adalah CMS yang paling sering digunakan untuk membuat website atau sekedar blog pribadi, tapi karena CMS ini sering digunakan, dan banyak yang bisa memodifikasinya, maka banyak juga yang mencoba untuk memasuki wilayah keamanan web tersebut.
Dalam artikel ini saya cantumkan htaccess yang sering saya gunakan untuk mengamankan web-web dan blog saya. File htaccess ini bisa dipasang seperti biasa, dan merupakan hasil dari penelitian konfigurasi apache dan juga hasil generate dari plugin security wordpress yang bernama “askapache pro” dengan beberapa pengaturan yang dipilih secara khusus agar tidak terjadi error pada server (403).
Berikut htaccess yang saya maksud :
<files wp-config.php>
order allow,deny
deny from all
</files>
Options -Indexes
ErrorDocument 402 /index.html
ErrorDocument 403 /index.html
ErrorDocument 404 /index.html
ErrorDocument 500 /index.html
# +ASKAPACHE PASSPRO 4.6.6
#######################################################
# __ __
# ____ ______/ /______ _____ ____ ______/ /_ ___
# / __ `/ ___/ //_/ __ `/ __ \/ __ `/ ___/ __ \/ _ \
# / /_/ (__ ) ,< / /_/ / /_/ / /_/ / /__/ / / / __/
# \__,_/____/_/|_|\__,_/ .___/\__,_/\___/_/ /_/\___/
# /_/
# – - – - – - – - – - – - – - – - – - – - – - – - – - -
# +APRO SIDS
# AhlulNetwork
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /wp-content/.*$ [NC]
RewriteCond %{REQUEST_FILENAME} !^.+(flexible-upload-wp25js|media)\.php$
RewriteCond %{REQUEST_FILENAME} ^.+\.(php|html|htm|txt)$
RewriteRule .* – [F,NS,L]
# -SID 40140011
# +SID 40140012
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /wp-includes/.*$ [NC]
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ /wp-includes/js/.+/.+\ HTTP/ [NC]
RewriteCond %{REQUEST_FILENAME} ^.+\.php$
RewriteRule .* – [F,NS,L]
# -SID 40140012
# +SID 40140013
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ ///.*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.+\?\=?(http|ftp|ssl|https):/.*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\?\?.*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.(asp|ini|dll).*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.(htpasswd|htaccess|aahtpasswd).*\ HTTP/ [NC]
RewriteRule .* – [F,NS,L]
# -SID 40140013
# +SID 60000001
Options -Indexes
DirectoryIndex index.html index.php /index.php
# -SID 60000001
# +SID 50140001
RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST|PROPFIND|OPTIONS|PUT)$ [NC]
RewriteRule .* – [F,NS,L]
# -SID 50140001
# +SID 50140003
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC]
RewriteCond %{THE_REQUEST} !^[A-Z]{3,9}\ [A-Z0-9\.\+_/\-\?\=\&\%\#]+\ HTTP/ [NC]
RewriteRule .* – [F,NS,L]
# -SID 50140003
# +SID 50140004
RewriteCond %{HTTP:Content-Disposition} \.php [NC]
RewriteCond %{HTTP:Content-Type} image/.+ [NC]
RewriteRule .* – [F,NS,L]
# -SID 50140006
# -APRO SIDS
# – - – - – - – - – - – - – - – - – - – - – - – - – - -
# __ __
# ____ ______/ /______ _____ ____ ______/ /_ ___
# / __ `/ ___/ //_/ __ `/ __ \/ __ `/ ___/ __ \/ _ \
# / /_/ (__ ) ,< / /_/ / /_/ / /_/ / /__/ / / / __/
# \__,_/____/_/|_|\__,_/ .___/\__,_/\___/_/ /_/\___/
# /_/
#######################################################
# -ASKAPACHE PASSPRO 4.6.6
# 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