Seguridad en WordPress, htaccess, wp-config y functions, top 10 consejos

post - - 2 replies - share
seguridad-en-wordpress

1. Tu equipo y tu conexión segura antes que la seguridad en WordPress

  • Parece obvio, pero no lo es tanto. Esto es lo primero antes de meternos con la seguridad en WordPress.
  • Usa sFTP.
  • Accede al panel de administración de tu WordPress, únicamente desde tu conexión y equipo habitual (entendiendo que ambos son completamente seguros).

2. Backups

Realizar copias periódicas de seguridad tanto de los ficheros como de la base de datos de nuestro WordPress.

3. WordPress

  • Descargar WordPress de su web oficial: http://wordpress.org
  • Siempre actualizar WordPress tras la salida de una nueva versión.

4. Plugins

  • Ser conscientes de que los plugins son códigos realizados por terceros programadores.
  • Usar los plugins estrictamente necesarios y de total confianza para nuestro proyecto.
  • Solo descargar del sitio oficial: http://wordpress.org/plugins/.
  • Tener las últimas versiones de los plugins almacenado en nuestro WordPress (esten activos o no).
  • Quitar del servidor todos los plugins que no usemos.
  • Saber que cuanto más plugins, más vulnerabilidad y menor escalabilidad tendremos.

Hay solo un plugin que si consideraría implementar para la seguridad en WordPress:

  • Better WordPress Security: Asegura tu WordPress en pocos minutos. Chequea, recomienda y facilita la configuración más segura.

5. Themes

  • Usar un buen theme, bien programado y de confianza.
  • Tener las últimas versiones de los themes almacenado en nuestro WordPress (esten activos o no).
  • Solo usamos un theme, quitar del servidor el resto.

6. Ficheros y permisos

7. Base de datos

  • Cambiar el prefijo por defecto de WordPress para las tablas “wp_” por uno más complejo.

8. Editar htaccess, wp-config.php y functions.php

.htaccess

A continuación he reunido algunos códigos para evitar posibles puntos flojos de seguridad y protegernos más del spam.
Sustituir *yourdomain.com.* por nuestro dominio en el código del apartado “# For AntiSpam Deny Access to No Referrer Requests”.
Estos códigos deben incorporarse al fichero .htaccess del directorio raíz de nuestra instalación de WordPress.

# BEGIN SECURE
# Block Sensitive Files from Browser 
Options All -Indexes
<files .htaccess>
Order allow,deny
Deny from all
</files>
<files wp-config.php>
Order allow,deny
Deny from all
</files>
<files error_log>
Order allow,deny
Deny from all
</files>

# Block the include-only files.
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]

# Disable the Server Signature 
ServerSignature Off

# For AntiSpam Deny Access to No Referrer Requests 
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]
# END SECURE

wp-config.php

Usar claves secretas y únicas de autenticación:

  1. Puedes generar las claves de forma aleatoria a través de la API de WordPress.
  2. Una vez generadas ponlas en tu fichero wp-config.php.
  3. Puedes cambiar las claves en cualquier momento para invalidar todas las cookies existentes. Esto forzará a todos los usuarios a volver a hacer login.

Desactivar la opción de editar ficheros desde wp-admin:

define('DISALLOW_FILE_EDIT', true);

Forzando el login seguro con SSL:

define('FORCE_SSL_ADMIN', true);

functions.php

Eliminar la versión de WordPress:

function wpsecure_remove_version() { return ''; }
add_filter('the_generator', 'wpsecure_remove_version');

9. Usuarios registrados

Super admin y administradores

  • Cambiar el usuario por defecto de WordPress admin por otro username más complejo.
  • Un solo administrador es más que suficiente.
  • El admin en especial debe tener una contraseña compleja. Por ejemplo 20 caracteres que incorpore números, letras y signos.

Resto de usuarios

  • Revisar los roles de usuarios en WordPress.
  • No todos tienen que ser “editores”, probablemente puedan ser “autores”.
  • El product manager o coordinador si podría tener el rol de “editor”.
  • ¿Realmente necesitas usuarios anónimos “suscriptores” de tu WordPress?. Si no es así fuera con ellos, quien quiera suscribirse lo hará por feed con programas a tal efecto como feedly.
  • Ojo con activar la opción para permitir el registro de usuarios anónimos que se encuentra en wp-admin > ajustes > general.

10. Comentarios y Spam

La mayoría de opciones a tratar en: wp-admin > ajustes > comentarios

  • Obligatorio activar la opción de rellenar nombre y email para comentar.
  • Obligatorio usar un plugin antispam como akismet.
  • Obligatorio incluir en la blacklist palabras típicas de spam.
  • Preferible marcar la opción para que un administrador apruebe el comentario antes de ser publicado.
  • También podemos usar un sistema de comentarios externo como DISQUS, más seguro y dinamizador.

Referencias para la seguridad en WordPress

Ley de cookies

post - - 5 replies - share
cookieslaw

Image by ssoosay

Llevo un par de días dando alguna vueltas a la ley de cookies, salió el tema a raiz de @chavalina y el post ley de cookie en error500.

Lo primero de todo decir que soy desarrollador web, no abogado, pero me toca este asunto, así que voy a dar mi opinión y a meterme de paso en camisa de once varas. 😳

Ley de cookies

Esta ley obliga a los propietarios de sitios web a informar de forma clara y obtener el consentimiento por parte del usuario para la utilización de cookies, justo antes de su carga en la página.

¿Quién cumple la ley de cookies?

Después de rastrear mucho la red, no acabo de encontrar ninguna solución ya implementada, que cumpla al 100% la ley de cookies, al menos en su interpretación estricta y en sitios de cierto nivel tecnológico. Seguro que por el gravísimo impacto que pueda ocasionar sobre el desarrollo, el poscionamiento del sitio web, su analítica o el socialmedia.

Ejemplo de web que cumpliría la ley

Supongamos que llegas a una página de entrada, y esta hace un bloqueo de cookies de antemano (interpretación estricta de la ley). Luego muestra un mensaje para pedir el consentimiento del usuario sobre unas cosas llamadas “cookies” donde se dice que es para mejorar su experiencia de navegación y hacer un seguimiento de las visitas.

Lo más seguro es que el usuario diga que NO, repercutiendo en una perdida de trafico tremenda e inviable para cualquier empresa.  🙁

Así que en definitiva veo técnicamente imposible la implantación estricta de la ley sin una repercusión dramática. No podría aparecer la web cargada correctamente con sus widgets de facebook, twitter, analytics, botones de compartir, etc. Funcionalidades que para muchos son obligatorias para una buena marcha del negocio frente a la competencia.

Posible solución

Puede ser una interpretación de la ley más liviana, donde en el momento que el usuario acceda al sitio web, nos aseguramos de informarle con un breve mensaje sobre el uso de cookies (técnicas, propias y ajenas) y su confirmación implícita al continuar navegando por nuestro sitio web.

También sería necesario mostrar un enlace a más información sobre la “política de cookies” para que el usuario pueda conocer de forma detallada cada cookie y su función.

Se trataría sobre todo de ser transparentes y de demostrar un buen hacer con el usuario, sin otras intenciones.

Ojo, sería importante que el proveedor conozca todas las cookies que estamos enviando, para así saber si se excede en la recopilación de datos y que estos no son de carácter personal.

Plugins para WordPress

Creo que los he probado todos. Mis dos preferidos son:

  • Cookie Warning: Es el más restrictivo, impone un popup y permite el borrado de las cookies.
  • Cookie Law info: Muestra un mensaje y no resulta tan drástico como el anterior, mi preferido por esta razón.

Noticias recientes

Opinión personal sobre la ley

Me parece que este tipo de mensajes asustan más que la transparencia y legalidad que puedan aportar.
Por una parte tiene sentido, pero por otra si seguimos así ya solo falta que el usuario arranque su navegador y le aparezca: Cuidado!!! esta apunto de navegar y adentrarse en el infierno. Esta seguro de que desea que su navegador guarde el historial (por eso de poder ir a la página anterior…).

Y en un futuro

No le veo mucho recorrido a la ley, solo hay que darse una vuelta por internet para darse cuenta del casi total incumplimiento de miles y miles de sitios web. Además de ponernos en desventaja con otros países donde no existen leyes tan restrictivas.

The stupid cookie law is dead at last

Más información en: Cómo cumplir la Ley de Cookies

Desactivar el editor visual en WordPress

post - - leave a reply - share
disablevisualeditor

Si queremos que los editores del blog usen únicamente el editor de texto (html) y no el visual, podemos ir a wp-admin > usuarios > perfil y activar o desactivar la opción de enriquecer el editor.

Pero si lo que queremos es desactivar el editor visual solo para determinados casos y de forma dinámica, la cosa se complica un poquito más, no obstante WordPress tiene un core y funciones para hacer todo lo que se te ocurra 😛

Vamos con un ejemplo, supongamos que la idea es desactivar el editorial visual solamente para las entradas de tipo (páginas) y solamente las que fueron creadas por el usuario administrador (que es el que tiene ID = 1).

En functions.php:

add_action('init', 'remove_editor_init');
function remove_editor_init() {
    $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];
    $post = get_post($post_id); 
    $type = $post->post_type;
    if ($type == "page" && get_post_field(post_author, $post_id) == 1) {
        add_filter('user_can_richedit' , '__return_false', 50 );
    }
}

Curso de WordPress

post - - leave a reply - share
wordpress

Marcos de q-interactiva y yo, nos volvemos a embarcar en una nueva aventura profesional, esta vez de la mano de CEPA (Centro de Enseñanza y Producción Audiovisual).

Se trata de un Curso de WordPress, donde estudiaremos este gestor de contenidos y crearemos fácilmente un sitio web o blog.

NO se requiere conocimientos técnicos, ni avanzados, nos bastará con el típico “a nivel de usuario” y muchas ganas de querer tener un sitio web propio.

Read more

Sage experience empresarial

image - - leave a reply - share
sage1

El Blog Sage Experience trata artículos en profundidad sobre el mundo empresarial y ecónomico.

En Sage creen firmemente en la filosofía de “renovarse para crecer” y por ello siguen trabajando día a día para adaptarnos al cambiante panorama empresarial y económico.

Su afán por satisfacer y ayudar a las pequeñas y medianas empresas, a los emprendedores y autónomos y a las grandes empresas, les mueve a renovar su imagen corporativa y seguir ofreciendo los mejores servicios de gestión y desarrollo empresarial.

Eliminando el style por defecto de una gallery con un add_filter en WordPress

post - - 2 replies - share

Cuando insertamos una galería de imágenes en WordPress se incrusta por defecto una serie de estilos CSS:

#{$selector} {
margin: auto;
}
#{$selector} .gallery-item {
float: {$float};
margin-top: 10px;
text-align: center;
    	width: {$itemwidth}%;
    }
    #{$selector} img {
    	border: 2px solid #cfcfcf;
    }
    #{$selector} .gallery-caption {
    	margin-left: 0;
    }

Este fragmento de código se encuentra en:
wp-includes/media.php (Line 833)

El problema es que se incrusta estilo en pleno documento, donde se ha insertado la galería. Lo cual no resulta muy limpio si atendemos a la abstracción de las 3 capas: diseño, función y contenido.

Si volvemos a media.php veremos entorno a la línea 831:

if ( apply_filters( 'use_default_gallery_style', true ) )

Por tanto una opción elegante podría ser:

add_filter('use_default_gallery_style', FALSE);

Colocando este filtro en el fichero functions.php del theme usado, indicamos a WordPress que no debe usar por el estilo CSS por defecto para las galerías, y relegamos el CSS necesario al fichero style.css donde tengamos centralizado todo el estilo del blog.

Usando filtros se puede cambiar altamente el comportamiento por defecto de WordPress.