Top RSS semanal: del 6 al 12 de abril de 2015: DeLonghi, Qurtuba, el futuro de WordPress SEO y más

En el Top RSS de esta semana quiero empezar con algo un poco offtopic, aunque no del todo. Creo que el sueño de muchos de vosotros que os pasáis horas delante del ordenador, programando, desarrollando, moviendo redes sociales y en generla, disfrutando de la tecnología, es tener una buena cafetera. Eso pensé yo al comprarme una cafetera DeLonghi... pero os recomiendo que os leáis esta entrada y los comentarios para entender porque desde ahora no volveré a tratar con DeLonghi y ninguna de su grupo.

Pero bueno, volviendo a la tecnología os cuento qué es lo que más me ha gustado leer esta semana:

Y para terminar y relacionado con la anterior, le quiero dar desde aquí mi más sincera enhroabuena al equipo que ha preparado y ha hecho que sea todo un éxito la Qurtuba Security Congress que se ha celebrado estos días en Córdoba y que han hecho que la ciudad sea un referente a nivel nacional en seguridad informática.

Lo mejor de mi RSS del 9 al 15 de marzo de 2015: WordPress, seguridad Linux, WooCommerce y Github

Me gusta hacer este tipo de entradas justo el domingo, pero es verdad que si me espero un día o dos, casi que mejor, así tenemos también las noticias y entradas del domingo para rellenar algo más esta lista que espero que os resulte interesante. Llevo ya unos pocos meses... o años haciéndola y creo que aunque no tiene muchos comentarios como otro contenido de Linux Hispano, sí que es una buena práctica reconocer el contenido de calidad que se genera en los demás espacios de la web.

Vamos a ver cuáles han sido las noticias elegidas de esta semana:

Lo mejor de mi timeline del 8 al 14 de marzo

Guía para SEO en WordPress:

https://twitter.com/jjdiazaparicio/status/576004882907398145

¡Pero cuidado! Estemos atentos a la última vulnerabilidad de este plugin:

https://twitter.com/Miguel_Arroyo76/status/575913294596304896

Y finalmente, a dónde dirigirnos cuando queremos dar un lavado de cara a nuestra web WordPress:

https://twitter.com/marketingandweb/status/575678165076566016

Jugando de forma segura en Internet, mejor con Linux

Es muy normal hoy en día tener inquietudes acerca de la seguridad de nuestros equipos y móviles. Lo es mucho más, si incluimos que podemos trabajar con banca online o con, como es el caso, juegos donde intervenga el dinero. Este tipo de inquietudes se disipan casi al completo si usamos Linux, y más aún, si sólo usamos software libre en nuestro equipo.
Por poneros un ejemplo, muchos os preguntaréis el porqué de los teclados que aparecen en la pantalla flotante al introducir los datos en ciertas entidades bancarias. Imaginemos el caso de que tenéis instalado algún tipo de troyano en Windows, la secuencia sería como sigue:

  1. Accedéis al sitio web del banco
  2. El troyano detecta que en efecto, estáis accediendo a un banco y por lo tanto activa el keylogger (o lo tiene activado por defecto)
  3. Inicias sesión en tu banco usando el teclado
  4. El keylogger captura tu usuario, contraseña y demás claves del banco y tenemos un problema

Por eso ponen un teclado virtual, para que en el punto 3) no tengas el problemas de tener que usar el teclado y los movimientos no sean fácilmen registrables (habría que grabar la pantalla, y eso, como imagináis es más complejo y requiere más ancho de banda).

En Linux este tipo de problemas para manejar bancos o juegos en línea desaparecen al no existir prácticamente la posibilidad de sufrir una infección por troyanos o cualquier otro tipo de malware.

Además, hace unos años, para jugar hacía falta instalar clientes que, normalmente, no existían para Linux y como mucho podían ejecutarse usando Wine o soluciones como CrossOver. Sin embargo, a día de hoy, en casino.com la tecnología web ha llegado a un nivel tan alto que con un navegador como Firefox en sus versiones más recientes (lo tendréis actualizado si usáis una distribución con un sistema gestor de paquetes) podréis jugar a multitud de juegos sin necesidad de instalar nada en vuestro equipo, sólo vuestro navegador. Siempre existen las versiones basadas en un cliente, pero como digo, ya nos son necesarias.

Algunos ejemplos de juegos que podemos encontrar en casino.com son los siguientes, desde los más clásicos BlackJack online o Ruleta Europea, a los más novedosos basados en personajes de ficción o populares, como Iron Man o Hulk Slots, basados en los héroes de Marvel; pasando por las versiones modernas de los clásicos: Ruleta Live, Ruleta Europea Premium o Blackjack Live. Básicamente necesitaremos registrarnos y desde ese momento podremos observar cuál es la dinámica del juego.

Lo mejor de mi timeline del 21 al 27 de septiembre

https://twitter.com/c2cero/status/515674699720704000

https://twitter.com/codection/status/515531591263592450

https://twitter.com/fernandot/status/513947020185202688

https://twitter.com/IntecoCert/status/515076099999817728

wp_kses-vs-strip_tags

wp_kses() o cómo limpiar cadenas HTML en WordPress para evitar ataques XSS

Cuando desarrollo plugins y themes para WordPress en CODECTION siempre procuro mirar por la seguridad, "sanitizando" variables tanto para evitar ataques vía inyección SQL como para evitar ataques XSS. Es muy frecuente, que si recibes peticiones y luego las devuelves por pantalla, las variables que manejes, si las maneja el usuario de alguna manera, puedan terminar siendo el origen de una ataque XSS.

Algo tan sencillo como pasar una etiqueta script o iframe en un sitio conveniente y además de un ataque XSS, eres una fuente de phising para el resto de la red. Por fortuna, WordPress facilita mucho la vida al desarrollador al respecto y para evitar este tipo de ataques nos ofrece una función que además es extensible en su funcionamiento vía parámetros.

La función en cuestión es wp_kses() y aunque es similar a strip_tags(), una función nativa de PHP, suele recomendarse para cuestiones de seguridad.

wp_kses-vs-strip_tags

¿Para qué usamos wp_kses?

Básicamente deciros que sirve para limpiar una cadena de elementos HTML indeseados (imaginad otros usos que no sea el de seguridad, se me viene a la cabeza un uso de "limpieza" de una cadena proveniente de Microsft Word o LibreOffice Write).

Tiene esta forma:

wp_kses($string, $allowed_html, $allowed_protocols);

Y los parámetros que recibe indican exactamente:

  • $string: cadena a filtrar
  • $allowed_html: etiquetas HTML que se permitirán y que no se limpiaran
  • $allowed_protocols: protocolos permitidos, por defecto vienen unos pocos y siempre se asegura que no va a permitirse etiquetas ni invocaciones a ficheros JavaScript

La función devolverá el código HTML totalmente limpiado.

El segundo parámetro es interesante, porque podemos definir también qué atributos pasarán de cada etiqueta, un ejemplo curioso:

array(
    'a' => array(
        'href' => array(),
        'title' => array()
    ),
    'br' => array(),
    'em' => array(),
    'strong' => array(),
);

Ejemplo

El ejemplo es original de Simon Wheatly. Tenemos de entrada:

Wisi <a href="#" style="color: red;">defui nunc</a> dignissim <strong class="weird">transverbero ideo vel</strong> utinam blandit, iaceo meus epulae enim amet nibh sed brevitas. Pala consequat <script type="text/javascript" src="http://example.com/certainly/do/not/want/this.js"></script> capio sino regula typicus <small>luptatum</small> olim ullamcorper uxor in verto.

Vamos a dejar sólo:

  • La etiqueta 'a' y sus atributos 'href', 'title' y 'target'
  • Y las etiquetas 'em' y 'strong' => array()

El código sería este:

$entrada = 'Wisi <a href="#" style="color: red;">defui nunc</a> dignissim <strong class="weird">transverbero ideo vel</strong> utinam blandit, iaceo meus epulae enim amet nibh sed brevitas. Pala consequat <script type="text/javascript" src="http://example.com/certainly/do/not/want/this.js"></script> capio sino regula typicus <small>luptatum</small> olim ullamcorper uxor in verto.';
$etiquetas_permitidas = array(
'a' => array( 'href' => array(), 'title' => array(), 'target' => array() ),
'em' => array(),
'strong' => array(),
);
$salida= wp_kses( $entrada, $etiquetas_permitidas );
echo $salida;

Y la salida, con los elementos HTML recortados:

Wisi defui nunc dignissim transverbero ideo vel utinam blandit, iaceo meus epulae enim amet nibh sed brevitas. Pala consequat  capio sino regula typicus luptatum olim ullamcorper uxor in verto.

¿Útil no? Además de por seguridad os puede interesar para filtrar ciertos elementos de forma que podáis eliminar código HTML que provenga de Microsoft Word o de cualquier otro sitio.

Lo mejor de mi RSS del 18 al 24 de agosto de 2014

La semana pasada estuve de vacaciones, así que ni pude leer apenas el RSS ni pude escribir esta entrada, por lo que no pude escribirla como de costumbre. Esta semana estoy de vuelta, así que ya va tocando este resumen de lo mejor de la red sobre temas relacionados con la tecnología libre:

Lo mejor de mi RSS del 4 al 10 de agosto de 2014

Mitad de agosto y el ritmo baja pero no para. En CODECTION vamos a estar una semana desconectados y aquí en Linux Hispano no quiero dejar de publicar esta entrega semanal para mantener un mínimo de publicaciones.

Akismet no conecta. Configurar Akismet detrás de un proxy

Si Akismet, el archiconocido plugin de WordPress para evitar SPAM, no es capaz de conectar con sus servidores puede ser por dos motivos, o porque sus servidores están caído (esto no suele pasar), o porque la red donde nos encontramos está bajo un firewall. ¿Qué hacemos en este caso? posiblemente los administradores de esa red provean un salida opcional mediante proxy.

proxy_akismet_linux_hispano

Este fue nuestro caso en uno de nuestro últimos proyecto con Codection. No citaré el nombre de la organización, pero si diré que tiene un volumen bastante grande, y la opción de abrirnos puertos o pasarelas para un servicio determinado no suele ser una opción que se ofrezca. ¿Entonces? Lo que os adelantaba arriba, la instalación de WordPress saldrá por un proxy.

¿Qué problema tiene Akismet con un proxy? Básicamente que no está debidamente preparado. Pero tras unos pocos cambios veréis cómo funciona a la perfección. Os explico cómo hacerlo.

Lo primero es definir en nuestro wp-config las siguientes líneas, especificando lo correspondiente a cada caso.

[code]define('WP_PROXY_HOST', 'url.del.proxy');
define('WP_PROXY_PORT', '8100');
define('WP_PROXY_USERNAME', 'usuario'); // no todos los proxies necesitan autenticación
define('WP_PROXY_PASSWORD', 'contraseña');[/code]

Ahora hemos de modificar el plugin, para ello, editamos el archivo akismet.php que encontramos dentro del directorio del plugin (por defecto: /wp-content/plugins/akismet). Buscamos la función akismet_http_post y la reemplazamos por la siguiente. Y eso es todo.

[code]

function akismet_http_post($request, $host, $path, $port = 80, $ip=null){
global $wp_version;
$akismet_version = constant('AKISMET_VERSION');
$args = array(
'method'=>'POST',
'user-agent'=>"User-Agent: WordPress/$wp_version | Akismet/$akismet_version",
'body'=>$request
);
$url = "http://".$host.$path;

if( !class_exists( 'WP_Http' ) )
include_once( ABSPATH . WPINC. '/class-http.php' );
$http_request = new WP_Http;
$http_response = $http_request->request($url,$args);
if( is_wp_error( $http_response ) )
return;
$response[0] = $http_response['headers'];
$response[1] = $http_response['body'];
return $response;
}

[/code]

Seguridad Linux

Lo mejor de mi timeline del 27 de octubre al 2 de noviembre

https://twitter.com/codection/status/396741079942578177

https://twitter.com/jmorales_26/status/396930330114150400

https://twitter.com/hidabe/status/396412754925350913

https://twitter.com/neonigmacdb/status/396251715441143808

https://twitter.com/fjcarazo/status/396676504865611776

Generación de claves secretas en WordPress, añadiendo sal a las contraseñas

En esta entrada vamos a hablar de una pequeña parte en la seguridad de WordPress, la que se refiere a la generación de los hash de claves. Este tramo de seguridad en WordPress puede fortalecerse fácilmente mediante el establecimiento de claves secretas en su archivo de configuración wp-config.php. Una clave secreta es un hashing salt, lo que nos hace tener un sistema más difícil de hackear añadiendo elementos aleatorios (la sal) a la contraseña que ha establecido. Estos pasos no son necesarios para que nuestra instalación de WordPress funcione correctamente, pero es importante destacar que añaden una capa adicional de seguridad en nuestro sitio.

secret-key_salt_wordpress_linux_hispano

Para disponer de esas nuevas claves secretas podemos:

  • Utilizar un generador de claves aleatorias, con el formato ya creado para simplemente incluirlo en el archico wp-config.php. En el siguiente enlace: Secret-key Salt se pueden obtener esas claves (prueba a refrescar y jamas verás la mismas combinación)
  • La otra vía es simplemente escribir un montón de caracteres al azar asociados a esas variables. Básicamente el objetivo es usar claves secretas que nos garanticen ser únicas y aleatorias.
  • Y lo que jamás debemos hacer es a) copiar las claves de nadie, b) publicar nuestras claves en ningún sitio o c) copiar las claves de la imagen que encabeza esta entrada :-)

¿Qué pasará si modifico esas claves cuando el sitio está en producción? Ningún problema, lo único que ocurrirá será que todas las cookies de WordPress serán invalidadas y los usuarios tendrán que loguearse de nuevo.

Sin duda, una forma sencilla, rápida y recomendada de fortalecer nuestra instalación de WordPress. Pronto, os traeré más.

Depurar AJAX o funciones del cron en WordPress con un log

Si trabajáis con WordPress, probablemente en más de una ocasión hayáis hecho esto en el wp-config.php para ver los errores que estáis buscando:

define('WP_DEBUG', true);

Sin embargo, hacer esto y solamente esto tiene una serie de problemas y limitaciones:

  • No podemos depurar el AJAX que ejecutamos llamando a admin-ajax, porque el error no se vierte en la pantalla
  • Si tenemos tareas programadas, tampoco veremos si generan errores
  • En un sitio en producción no podremos mostrar por seguridad y por funcionalidad mensajes, por lo que deberemos guardar los errores en un log

Con la solución de guardar los errores en el log, evitamos todos estos problemas y le damos una solución rápida y práctica.

¿Cómo activar el log en WordPress para que guarde los errores, avisos e informaciones que de otra forma saldrían en pantalla?

Sólo deberemos hacer dos cosas. Asegurarnos de que existe un fichero debug.log en el raíz (podéis crearlo en blanco para evitar problemas de permisos) de la carpeta wp-content y que WordPress puede escribir sobre él.

Una vez hecho esto, en el wp-config.php sólo deberemos agregar tres líneas en lugar de una:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // para que sí guarde los errores en el log
define('WP_DEBUG_DISPLAY', false); // para que no muestre los errores en la pantalla

Seguro que os será de utilidad. ¿Más dudas sobre cómo depurar WordPress?

Cómo evitar el espionaje. Proyecto PRISM-BREAK

Gracias a Javier Sánchez Monedero a través de la lista de correo del aula de software libre la Universidad de Córdoba me entero de PRISM-BREAK, un proyecto donde podemos encontrar alternativas software para salir del espionaje de la NSA.

alternativas_prism_nsa_linux_hispano

Como apuntaba Javier, el tan conocido como fielmente usado, Google Chrome, se encuentra dentro de la lista de software que envían información a la NSA. Mucho cuidadito con el navegador que uséis, habrá que centrarse en su versión libre Chromium o desmarcarse hacia el de la gente de Mozilla.

Actualizaciones sólo de seguridad en Ubuntu y Debian

Actualizar sólo paquetes de seguridad en Ubuntu o Debian

Actualizaciones sólo de seguridad en Ubuntu y DebianOs pongo en situación, tenemos un servidor en producción y aunque mantengamos una política de recuperación rápida basada en snapshots o balanceo, la actualización del sistema es un asunto vital por dos razones: nuevas funcionalidades y sobre todo, seguridad.

Sin embargo, aunque los sistemas gestores de paquetes estilo apt o yum han resuelto gran parte del problema, no deja de ser un riesgos actualizar. ¿Por qué? Puede ser que el sistema por lo que sea, tenga una incompatibilidad hardware o con el software que ya tienes instalado.

Solución de compromiso que siempre recomiendo: actualizar sólo paquetes de seguridad. Veamos cómo hacerlo en distribuciones Debian y derivadas, como Ubuntu. El proceso tiene dos pasos.

Elegir sólo repositorios de seguridad

Primer paso, para ello hacemos una copia del original:

sudo cp /etc/apt/sources.list /etc/apt/security.sources.list

Paso seguido, lo editamos y dejamos sólo las direcciones de seguridad. Las reconoceremos porque incluyen security en su URL, algo así:

deb http://security.ubuntu.com/ubuntu raring-security main restricted

Actualizamos indicando que sólo mire en este nuevo fichero

En lugar del típico apt-get upgrade, le indicaremos un parámetro con la dirección del nuevo fichero:

sudo apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/security.sources.list

Y asunto resuelto. A pesar de esto, seguirán apareciendo "security updates" pendientes, ya que hay actualizaciones de seguridad en el repositorio que no es "security" de nombre, ¿alguien ha conseguido resolver esto?