Securización básica de WordPress
En este post te recomendamos aplicar las siguientes medidas de seguridad básicas en toda instalación WordPress. Estos consejos no son todos los posibles, pero sí son útiles para proteger WordPress de malware y otros peligros.
Securización mediante el archivo .htaccess
# 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. 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] # END WordPress #inicio Proteger el archivo wp-config.php order allow,deny deny from all allow from xxx.xxx.xxx.xxx //cambiar por la ip publica #fin Proteger el archivo wp-config.php # inicio Block WordPress xmlrpc.php requests order deny,allow deny from all allow from xxx.xxx.xxx.xxx //cambiar por la ip publica # fin Block WordPress xmlrpc.php requests # inicio No dejamos acceder a wp-includes 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] # fin No dejamos acceder a wp-includes # inicio Cabecera Content Security Policy Header always set Content-Security-Policy "upgrade-insecure-requests;" # fin Cabecera Content Security Policy #inicio proteger el archivo wp-login order deny,allow allow from xxx.xxx.xxx //cambiar por la ip publica deny from all #fin proteger el archivo wp-login
Securización mediante el archivo functions.php de tu childtheme
Ruta:
/wp-content/themes/flatsome-child/functions.php
<?php // Cabecera X-XSS-Protection para evitar ataques XSS en IE y Chrome add_action( 'send_headers', 'add_header_xxssprotection' ); function add_header_xxssprotection() { header( 'X-XSS-Protection: 1;mode=block' ); } // La cabecera X-Frame-Options sirve para prevenir que la página pueda ser abierta en un frame, o iframe add_action( 'send_headers', 'add_header_xframeoptions' ); function add_header_xframeoptions() { header( 'X-Frame-Options: SAMEORIGIN' ); } // la cabecera X-Content-Type-Options en la respuesta con el valor “nosniff”, los navegadores que soportan esta cabecera (IE y Chrome), no cargan las hojas de estilos, ni los scripts (Javascript), cuyo Myme-type no sea el adecuado add_action( 'send_headers', 'add_header_xcontenttype' ); function add_header_xcontenttype() { header( 'X-Content-Type-Options: nosniff' ); }