
# BEGIN WordPress
# Las directivas (líneas) entre «BEGIN WordPress» y «END WordPress» son
# generadas dinámicamente y solo deberían ser modificadas mediante filtros de WordPress.
# Cualquier cambio en las directivas que hay entre esos marcadores serán sobrescritas.
<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
	RewriteBase /
	RewriteRule ^index\.php$ - [L]
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule . /index.php [L]
</IfModule>

# END WordPress


# ==================== Seguridad WordPress (Version 0.0.3) ====================

# Sin listado de directorios
Options -Indexes

# Proteger archivos sensibles
<FilesMatch "^(wp-config\.php|\.htaccess|readme\.(html|txt)|debug\.log)$">
	Require all denied
</FilesMatch>

# Bloquear xmlrpc.php
<Files "xmlrpc.php">
	Require all denied
</Files>

# Reglas de ejecucion
<IfModule mod_rewrite.c>
	RewriteEngine On
	
# No ejecutar PHP en uploads
	RewriteRule ^wp\-content/uploads/.*\.(?:php[1-7]?|pht|phtml?|phps)\.?$ - [NC,F]
	
# Bloquear ejecucion directa en wp-includes
	RewriteRule ^wp\-includes/[^/]+\.php$ - [F]
	
# (2) Proteger wp-admin/install.php y wp-admin/includes/
	RewriteRule ^wp-admin/install\.php$ - [F]
	RewriteRule ^wp-admin/includes/ - [F]
	
# (5) Filtrar query strings peligrosos (conservador)
	RewriteCond %{QUERY_STRING} \.\./ [NC,OR]
	RewriteCond %{QUERY_STRING} (etc/passwd|boot\.ini) [NC,OR]
	RewriteCond %{QUERY_STRING} (\<|%3C)script(\>|%3E) [NC,OR]
	RewriteCond %{QUERY_STRING} (base64_decode|union|concat|declare|insert) [NC]
	RewriteRule ^ - [F]
</IfModule>

# ==================== Seguridad WordPress (Version 0.0.3) ====================
