Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Evitar ataques de fuerza bruta en WordPress protegiendo el archivo wp-login.php con contraseña

Imago voragine.net
• Por
Una de las medidas para prevenir ataques de fuerza bruta en WordPress es protegiendo el inicio de sesión con contraseña usando HTTP Basic Authentication. Esta capa de seguridad se configura directamente en el servidor web, Apache2 por ejemplo. Este método permite proteger con contraseña el acceso a determinadas áreas de un servidor, archivos o carpetas, previamente a la ejecución de PHP. Al no ejecutar PHP, el consumo de recursos del servidor es mucho menor y el colapso es más difícil. Por esta razón es una manera más eficaz que usar un plugin.

WordPress es software libre, sin embargo ¿es libre el ecosistema de themes y plugins que se ha generado a su alrededor?

Imago voragine.net
[actualizado el ] • Por

Empecé a usar WordPress entre otras razones porque es software libre. Además está liberado bajo licencia GPL versión 2 o posterior, la misma licencia con la que libero el software que yo mismo programo. La licencia GPL incluye la condición de que cualquier obra derivada debe liberarse a su vez bajo la misma licencia GPL. De esta manera se asegura que el procomún digital que es el software libre siga nutriéndose.

Sin embargo muchos de los themes y plugins de WordPress no son software libre. Si los themes y plugins se consideran obras derivadas de WordPress deberían liberarse bajo la misma licencia GPL que WordPress, y por tanto ser software libre.

En este post explico cómo es esto posible y qué consecuencias tiene para usuarios y desarrolladores.

Cómo habilitar el uso de oEmbed en los widgets de WordPress

Para usar el sistema oEmbed en los widgets de WordPress, y de esa manera evitar el uso de algunos plugins, basta añadir las siguientes líneas al archivo functions.php del theme que se esté usando.

Una vez añadidas estas líneas podemos incrustar vídeos y otros contenidos externos en un área de widgets añadiendo la URL a un widget de texto.

Encontré el snippet en wpbeginner, donde tienen otros dos relacionados para controlar el ancho del elemento incrustado:

Contexto

Feed para custom post types o custom taxonomies en WordPress

Por omisión WordPress genera el feed de contenidos en la URL /feed. Por ejemplo, para este blog en http://voragine.net/feed. Sin embargo, en este feed solo se incluyen los posts, ningún otro tipo de contenido, ni siquiera las páginas.

WordPress genera feeds para el resto de post types de manera separada. Por ejemplo, para obtener un feed de la linkoteca, que funciona con el post type “link”, la URL del feed es http://voragine.net/feed/?post_type=link.

Lo mismo ocurre con las taxonomías. Por ejemplo, para obtener el feed de un tag: http://voragine.net/feed?tag=apache.

Por último se pueden combinar parámetros: http://voragine.net/feed?post_type=link&tag=apache.

Contexto

Cómo sobreescribir un script js en un child theme de WordPress

Para modificar un archivo javascript en un tema hijo (child theme) de WordPress no basta con incluirlo en la carpeta del child theme y esperar que WordPress lo use en vez del equivalente en el parent theme (tema padre), como ocurre con los archivos PHP.

Con los archivos javascript tenemos que realizar dos operaciones: eliminar de la cola de scripts el archivos del parent theme, y añadir el archivo modificado alojado en la carpeta del child theme:

Usar el hook wp_print_scripts, en vez de wp_enqueue_scripts, nos asegura que la acción se ejecutará después de que el parent theme haya registrado y añadido a la cola los scripts.

Además de la función wp_dequeue_script existe wp_deregister_script. Ambas conseguirán que el script del parent theme no se cargue, pero usando la segunda sin la primera obtendremos un notice de PHP. Parece ser que lo correcto es usar ambas.

Cómo cargar archivos .mo con las cadenas de traducción en un tema hijo en WordPress

Cuando se trabaja con un tema hijo (child theme) en WordPress para una página en varios idiomas nos encontraremos con cadenas a traducir en el parent theme y en el child theme. Cada uno tendrá sus archivos .po y .mo y los archivos de traducciones se activarán desde el archivo functions.php.

Para el archivo con las cadenas del chid theme utilizamos load_child_theme_textdomain:

Si el archivo con las cadenas del parent theme no está cargado, lo podemos cargar en el child theme de la misma manera que el del child theme pero usando el hook load_theme_textdomain.

Desactivar la capacidad de editar archivos del theme desde el panel de WordPress

La capacidad de edición de archivos del theme o de los plugins desde el panel de administración de WordPress puede ser una vulnerabilidad importante si un usuario no deseado consigue acceso de administrador al panel, ya que podrá editar los archivos libremente e incluir código malicioso.

En una instalación estándar de WordPress esta capacidad está activa. Para desactivarla podemos incluir la siguiente línea en el archivo wp-config.php:

Cómo ocultar la versión de WordPress de la cabecera de la web: deshabilitando wp_generator

La función wp_head() presente en todas las cabeceras de WordPress incluye una llamada a otra función, wp_generator(), que se encarga de incluir en la sección head del código de la web la versión activa de WordPress.

Hay un gran debate sobre si es un problema de seguridad o no tener visible la versión activa de WordPress. En cualquier caso no tenerla visible no es ningún problema: la etiqueta solo sirve para propósitos estadísticos.

Para no mostrar la versión de WordPress se puede incluir la siguiente línea en el archivo functions.php del theme activo:

Ejecutar acciones al activar o desactivar un theme en WordPress

Imago voragine.net
[actualizado el ] • Por
Al activar un theme de WordPress hay veces que viene bien modificar algún valor de configuración de WordPress para que el theme funcione plenamente sin que el usuario tenga que hacer nada. Por ejemplo activar el registro de usuarios que por defecto está deshabilitado. Igualmente, hay que prever dejar todo como estaba cuando el theme se desactive. Para ello WordPress dispone de dos hooks a los que podemos asociar acciones.

Cómo habilitar el uso de shortcodes en los widgets de WordPress

Para usar cualquier shortcode en los widgets de WordPress, y de esa manera evitar el uso de algunos plugins, basta añadir la siguiente línea al archivo functions.php del theme que se esté usando.

Una vez añadida la línea podemos usar shortcodes en el contenido de cualquier widget de texto.