Seguridad WordPress

Cada vez más personas utilizan WordPress como gestor de contenidos, ya sea un blog, un sitio web corporativo, o directamente foros, o un e-commerce. Este hecho de que cada vez más personas decidan utilizar WordPress hace que se convierta en un punto de inicio de ataques contra usuarios y sistemas.

Si eres de los que utiliza WordPress, para empezar, tranquilo: WordPress es seguro (las personas no tanto).

Aquí te dejo la presentación de la meetup de WordPress Barcelona en la que hablo de seguridad, presento WPdanger, hablo del próximo Proyecto Tide de WordPress…

Descárgate la presentación en formato PDF (987 KB).

WP-CLI para mantenimiento y seguridad

Si utilizas WordPress y tienes la posibilidad de gestionar el acceso por Shell, sin duda has de tener disponible WP-CLI. Y si utilizas WP-CLI entonces ya sabes que existen una decena de comandos que te facilitan la vida.

En general tengo puesto en mi agenda hacer al menos una revisión semanal de todos los WordPress que tengo, y eso incluye cierto mantenimiento y, de paso, darle una ojeada a los distintos elementos para que, de un vistazo, no se haya colado nada que no tenga que estar…

Esta es una pequeña lista de comandos que uso en este orden para revisar, verificar y actualizar el sistema.

$ reviso la versión de la instalación de WP-CLI
wp cli version
$ compruebo si hay actualizaciones disponibles de WP-CLI
wp cli check-update
$ actualizo WP-CLI a su última versión
wp cli update

$ entro en la carpeta de la instalación que quiero analizar
cd /carpeta/de/instalacion/wordpress/

$ verifico que no haya nada "raro" instalado en el core
wp core verify-checksums
$ listo la configuración del wp-config
wp config get
$ listo la lista de usuarios
wp user list

$ reviso la versión del WordPress
wp core version
$ compruebo si hay una nueva versión del WordPress
wp core check-update
$ actualizo a la última versión del WordPress
wp core update --path="/carpeta/de/instalacion/wordpress/"
$ verifico que no haya nada "raro" instalado en el core
wp core verify-checksums

$ hago una lista de todos los plugins instalados
wp plugin list --path="/carpeta/de/instalacion/wordpress/"
$ listo todos los plugins que tienen actualizaciones
wp plugin update --dry-run --all --path="/carpeta/de/instalacion/wordpress/"
$ actualizo todos los plugins que tienen actualizaciones
wp plugin update --all --path="/carpeta/de/instalacion/wordpress/"

$ hago una lista de todas las plantillas instaladas
wp theme list --path="/carpeta/de/instalacion/wordpress/"
$ listo todas las plantillas que tienen actualizaciones
wp theme update --dry-run --all --path="/carpeta/de/instalacion/wordpress/"
$ actualizo todas las plantillas que tienen actualizaciones
wp theme update --all --path="/carpeta/de/instalacion/wordpress/"

$ hago una lista de todos los idiomas instalados
wp language core list --status=installed
$ listo todos los idiomas que tienen actualizaciones
wp language core update --dry-run --path="/carpeta/de/instalacion/wordpress/"
$ actualizo todos los idiomas que tienen actualizaciones
wp language core update --path="/carpeta/de/instalacion/wordpress/"

$ elimino todos los transients caducados
wp transient delete --expired
$ compruebo el prefijo del WordPress
wp db prefix
$ verifico el tamaño de la base de datos del WordPress
wp db size
$ optimizo la base de datos del WordPress
wp db optimize
$ verifico el tamaño de la base de datos del WordPress
wp db size

Obviamente este listado de comandos tiene algunos “inútiles” pero que son válidos para comprobar por enésima vez que todo es correcto y que nada se descuadra de lo que ha de ser. De la misma forma hay varios comandos que revisa y re compruebas elementos que no son necesarios comprobar. Pero aún así, con este listado, poco a poco, salen las cosas bien.

Generador de contraseñas en PHP

En PHP hay muchas formas de generar contraseñas, algunas propias del sistema. En ocasiones se usan sistemas sólo números. Con este sistema tienes disponible todos los caracteres que quieres como disponibles (mayúsculas, minúsculas, números, símbolos…) y la longitud (24, que en este caso la convierte en segura). Así que si necesitas restaurar la clave a un usuario, con esto le ofrecerás una clave segura.

<?php
$caracteres = '0123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$#@!?=%-+*.[]{}_,;:<>|';
$caractereslong = strlen($caracteres);
$clave = '';
for($i = 0; $i < 24; $i++) {
  $clave .= $caracteres[rand(0, $caractereslong - 1)];
}
echo $clave;
?>

WordPress SEO: ¿Yoast o más sencillo?

En muchas ocasiones cuando instalamos un WordPress vamos con nuestra lista predefinida de plugins, y habitualmente incorporamos uno de SEO. Estos plugins de SEO en realidad hacen poco, ya que es cierto que WordPress no permite de serie gestionar cómo queremos los títulos, pero él es capaz de generar automáticamente el meta-description si se hace bien.

Es por esto que mucha gente utiliza Yoast como plugin de SEO, que además de llevar muchas herramientas que te dicen cómo escribir (algo que nunca he usado ni usaría), te corrigen (en cierta manera) el formato de título y snippet que se muestra en los resultados de búsqueda.

Hace poco me puse a buscar una solución que fuera extremadamente simple para el tema de eso: título, descripción y palabras clave. Estos tres viejos elementos son en el fondo lo único que necesitaba, el resto ya lo hace bien la plantilla. Y acabé encontrando un plugin que no está en el repositorio oficial pero que está gestionado como tal: WP SEO: A simple, straightforward SEO plugin for WordPress. Just the facts, Jack. Para aquellos que quieran, descarga la versión 0.13.0.

Este plugin lo que hace es añadir estos campos:

Y hace simplemente eso… aunque se pueden usar los distintos códigos de sustitución:

#archive_date#
#author#
#categories#
#date_modified#
#date_published#
#excerpt#
#post_type_plural_name#
#post_type_singular_name#
#search_term#
#site_description#
#site_name#
#tags#
#term_description#
#term_name#
#thumbnail_url#
#title#

Con estos códigos te puedes hacer la configuración personalizada para todos los tipos de página que tengas en tu sitio:

En la última opción, que te permite crear tus propios “metas”, podrías por ejemplo configurar uno para Google Search Console, de forma que el nombre sea google-site-verification y el content, el identificador que Google proporciona.

Lo siguiente es… si hasta ahora he estado utilizando Yoast ¿puedo migrar los datos de Yoast a este sistema? La respuesta es sí, se puede hacer, aunque no tengo ningún plugin ni nada parecido. Aún así, con 2 consultas SQL se hace muy rápido:

UPDATE wp_postmeta SET meta_key = '_meta_title' WHERE meta_key = '_yoast_wpseo_title';
UPDATE wp_postmeta SET meta_key = '_meta_description' WHERE meta_key = '_yoast_wpseo_metadesc';

Y si quieres hacer limpieza una vez desinstalado Yoast, puedes borrar “los restos”:

DELETE FROM wp_postmeta WHERE meta_key LIKE '_yoast%';

A partir de aquí tendrás una forma sencilla de añadir el título, descripción y keyworks que quieras sin necesidad de instalar un plugin pesado como son generalmente los de SEO.

Youtube Live: una experiencia de casi 6 horas

No sé si aún estoy despierto después de la paliza que nos dimos anoche para hacer el directo. Sin duda es de esas fechas que tendré que marcar en mi agenda de hitos en Internet: haber hecho junto a un grupo de buenos amigos un programa en directo en Youtube Live de casi 6 horas (5:45). Y podríamos haber seguido.

La historia no está muy clara de cómo comenzó, pero creo que empezó entre la primera visita al Late Show y el programa del verano, donde nos reímos muchísimo (como sobre todo se puede ver en las tomas falsas), y estaba ya decidido cuando cuando estuve hablando sobre socios, sin querer, en el Evento.

La propuesta que nos hicimos el equipo del MOLS fue la de hacer una maratón de 8 horas (que quedaron en 6) para hablar de Marketing Online. Salieron temas de todo tipo, comenzando por SEO, pasando por analítica, redes sociales, negocios, impuestos, logística, test A/B y un sinfín de temas. Obviamente en algunos momentos se nos iba la olla y acabábamos hablando de otros temas relacionados pero tangenciales. Por suerte, estaba Joan Boluda y, posteriormente, Joan Artés, para complementar todos los puntos de vista.

Por supuesto pude hablar largo y tendido de MAM Originals (proyecto en el que soy socio y trabajo actualmente) y del que pude llevar algunos regalos navideños al equipo, y a todos los que quieran un descuento, entre el 1 y el 8 de diciembre (2017) tenéis un código de descuento del 20% utilizando el código BOLUDA. Sin duda MAM me dio pie a hablar de muchos temas ya que se basa en muchos de los asuntos tratados en el programa, y es que no deja de ser un e-Commerce.

Algo que surgió durante muchas veces en el programa fue la separación que aún existe entre los equipos de tecnología y de marketing, porque unos “no hablan el mismo idioma” que los otros. En este caso la única solución que se me ocurre es la de tener un perfil puente que consiga que la parte digital del proyecto, se pegue de alguna forma y todos se entiendan.

Obviamente, os diría que veáis el vídeo (aunque sea en varios días), que saquéis vuestras propias conclusiones, y que estoy contento de que Joan se esté animando a hacer más directos, aunque sean de menos de una hora 🙂 porque es cierto, cansa.

Por cierto, al final, hicimos un poco de Inception con “directos dentro de los directos“.