Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Por qué Aaron Swartz no fue un criminal, por qué lo que hizo no fue robar

Uno de los abogados de Aaron Swartz cuenta en Boing Boing por qué no se le puede considerar un criminal. Razones que ya se contaban en el documental The Internet’s Owns Boy:

  1. Aaron hizo uso de la red de ordenadores del MIT como cualquiera puede usarla, de hecho como el MIT permite usarla: accedió a ella como invitado, navego a través de su base de datos de material académico JSTOR y descargó artículos. Esto lo puede hacer cualquiera que esté en el campus del MIT. La única diferencia es que no lo hizo manualmente, sino a través de un pequeño script que descargaba masivamente toda la base de datos.
  2. Aaron no robó ya que no quitó nada a nadie. Cada uno de los artículos que descargó de la base de datos JSTOR sigue en ella para que cualquiera siga aprovechándolos.

Como dice Dan Purcell, el abogado de Aaron, dos razones de sentido común.

Cómo «encolar» o cargar hojas de estilo antes que el CSS del theme en WordPress

Imago voragine.net
[actualizado el ] • Por Enlace permanente

En WordPress las hojas de estilo de un theme o un plugin se deben cargar usando las funciones wp_register_style y wp_enqueue_style. En el caso de un theme estas funciones se llaman desde el archivo functions.php. La hoja de estilo principal del theme, style.css, no hace falta cargarla ya que WordPress la carga automáticamente.

Cuando llamamos otra hoja de estilo, además de style.css, ésta se carga por omisión después que style.css. Para invertir este orden hay que indicar que style.css tiene como dependencia la otra hoja de estilo.

Por ejemplo, si estamos desarrollando un theme con el framework Bootstrap de Twitter y queremos cargar su CSS antes que el style.css del theme:

add_action( 'wp_enqueue_scripts', 'prefix_load_css_files' );
function prefix_load_css_files() {
   wp_register_style( 'bootstrap-css', get_template_directory_uri() . '/bootstrap/css/bootstrap.min.css' );
   wp_register_style( 'theme-css', get_stylesheet_uri(), array('bootstrap-css') );
   wp_enqueue_style('theme-css');
}

El tercer parámetro que pasamos a la función wp_register_script son las dependencias. En la línea 4 estamos indicando que la hoja de estilos del theme tiene como dependencia la hoja de estilos de bootstrap, así que debe cargarse después.

Deshabilitar los pingbacks vía XML-RPC para impedir ataques de fuerza bruta a WordPress

Imago voragine.net
[actualizado el ] • Por Enlace permanente

Actualización septiembre 2022. Esta solución da error en las últimas versiones de WordPress y PHP. No funciona con WordPress 6 o superior y con PHP8. Puedes encontrar una solución actualizada en este otro post.


Parece ser que para evitar potenciales ataques de fuerza bruta a sitios con WordPress a través del protocolo XML-RPC, basta deshabilitar los pingbacks y no todo el sistema XML-RPC, como cuentan en WP-Tavern.

Si en tu sitio utilizas servicios que utilizan XML-RPC, como algunos plugins como Jetpack o la aplicación móvil de WordPress quizás te interese deshabilitar únicamente los pingbacks, que son en realidad la puerta de entrada de los ataques de fuerza bruta a WordPress.

Añade la siguiente función al functions.php de tu theme:

add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );
function remove_xmlrpc_pingback_ping( $methods ) {
   unset( $methods['pingback.ping'] );
   return $methods;
} ;

Evitar y resolver ataques de fuerza bruta a sitios con WordPress: la vulnerabilidad XML-RPC

Imago voragine.net
• Por

Hace unos seis meses se descubrió que el archivo xmlrpc.php de WordPress, responsable de las comunicaciones remotas vía XML-RPC, convertía a los servidores donde estuviese instalado este gestor de contenidos en potenciales participantes de ataques DoSS. Hace un par de meses esta vulnerabilidad se empezó a usar también como puerta de entrada de ataques de fuerza bruta a los propios servidores.

Desde la versión 3.5, el protocolo XML-RPC viene activado por omisión en WordPress lo que hace que cualquier instalación de WordPress sea vulnerable. Para eliminar esta vulnerabilidad no queda otra que desactivar completamente el soporte XML-RPC de WordPress.

Cómo actualizar WordPress, instalar plugins o themes en localhost automáticamente

Imago voragine.net
• Por
WordPress se puede actualizar de dos maneras: automáticamente mediante el botón Actualizar del panel de administración, o sustituyendo los antiguos archivos por los nuevos vía FTP. Hay veces que usando el primer método, WordPress nos pide las credenciales de conexión con el servidor, y hay veces que aunque se las demos, la actualización no se produce. Esto es común en instalaciones de WordPress en localhost aunque se puede dar en cualquier servidor. Cuando esto ocurre la causa es una configuración del servidor incompatible; generalmente el problema está relacionado con los permisos y propietarios de los archivos.

Cómo modificar el shortcode caption de WordPress para adaptarlo a HTML5 y hacerlo más responsive

Imago voragine.net
[actualizado el ] • Por
El shortcode caption es el que usamos, aún sin darnos cuenta, para introducir imágenes con pie de foto en el contenido de un post o página. Aunque dispone de algunos parámetros que nos permiten configurar mínimamente el estilo, la salida que genera no cuenta con las marcas semánticas para imágenes de HTML5. Además el shortcode define un ancho absoluto para la imagen, haciendo que el código no sea responsive. Modificando el shortcode con una función que podemos incluir en un plugin o en el archivo functions.php del theme, podemos añadir estas dos características al caption.

Cambiar la extensión por omisión del excerpt o extracto en WordPress

El excerpt de WordPress, si no se define para un post, está programado para seleccionar las 55 primeras palabras del contenido del post.

Si se quiere cambiar esta extensión se puede incluir el siguiente código en el archivo functions.php del theme:

// configurando la extensión por omisión del excerpt a 20 palabras
function prefijo_excerpt_length( $length ) {
        return 20;
}
add_filter( 'excerpt_length', 'prefijo_excerpt_length', 999 );

Añadir algunas capacidades a un tipo de usuario (rol) en WordPress

Imago voragine.net
[actualizado el ] • Por
WordPress dispone de cinco tipos de usuario, cinco roles, con capacidades diferentes. Hay veces que ninguno de estos tipos se ajusta exáctamente al uso que un usuario hará de una página con WordPress. En estos casos podemos añadir o eliminar capacidades o permisos a uno de los cinco tipos de usuario, para adaptarlo a nuestras necesidades.

Entendiendo el sistema de paginación de WordPress: paginando el archivo, los resultados de búsqueda o un custom post type

Imago voragine.net
• Por

La función que ofrece WordPress para introducir una barra con enlaces a las diferentes páginas de resultados es paginate_links, es decir, un paginador de resultados del tipo "Anterior, 1, 2, 3, ..., Siguiente".

Esta función se encarga de construir las URLs para cada página de resultados, y es eficaz, salvo si entran en juego otros parámetros en la URL, por ejemplo s si queremos paginar los resultados de una búsqueda o post_type si estamos paginando un loop para un post type diferente a post. En estos casos, tendremos que ayudar a paginate_links a construir las URLs.

Para ello tenemos que darle a WordPress la siguiente información:

  • El loop a paginar.
  • El número total de páginas, en función de la cantidad de posts en el loop y la página actual en la que se está.
  • Los parámetros de la URL que queremos mantener en los enlaces a las distintas páginas.

La responsabilidad de los emisores de Open Badges

En El Diario, Pau Llop entrevista a Erin Knight, responsable de los Open Badge de la Mozilla Foundation. Un fragmento interesantes sobre la responsabilidad de los emisores de Open Badge, a tener en cuenta en Ciudad Escuela:

Mediante el uso de una infraestructura compartida, podemos verificar fácilmente las insignias para asegurarnos de que un emisor emitió realmente una insignia concreta y que no fue simplemente copiada del sitio o perfil de otro usuario con esa misma insignia. Así que nuestra tecnología incluye de serie una validación de bajo nivel. Sin embargo, la insignia no tiene sentido sin algo detrás de ella: aprendizaje, logros reales y alguna forma de evaluación. Cada emisor de insignias debe diseñar buenas experiencias de aprendizaje y evaluaciones sobre las que se puedan emitir ‘badges’, así que está en la mano del emisor poner controles y equilibrios para frenar las trampas y garantizar que sus insignias son representativas de lo que dicen ser.

Erin Knight: «Las insignias virtuales serán más eficaces que el CV para encontrar empleo», blog Colaboratorio de El Diario.

Me parece muy importante esta concepción de validación «de bajo nivel» de la que habla Erin. La tecnología Open Badge es segura por cómo está diseñada y construida, con un sistema de validación de las insignias que pasa por el servidor y el dominio del emisor. Erin enfatiza en la entrevista que la validez y la autenticidad de los badges depende en última instancia de la calidad del programa educativo y de los mecanismos de evaluación del emisor, que es en última instancia la validación «de alto nivel».