Wordpress: Cerrar comentarios en post attachment

Cada vez que subes una imagen (u otro tipo de archivo) a wordpress, este te crea un nuevo post que, aunque normalmente no será visible, tiene su propia URL y por eso es accesible para los visitantes del blog un poco hábiles o, más frecuentemente, para los spammers.

De un tiempo a esta parte estoy recibiendo mucho spam en este tipo de entradas para imágenes u otros attachments y la solución más rápida que se me ha ocurrido es directamente cerrar los comentarios en esos “pseudopost” de imágenes, esto no afectará a los comentarios de los verdaderos post, los que contienen el texto y esa imagen que has subido.

El query que tendrás que hacer desde el phpmyadmin es el siguiente

[sql]
UPDATE`wp_posts`
SET`comment_status` = ‘closed’
WHERE `post_type` = ‘attachment’
[/sql]

Recuerda hacer una copia de seguridad de la tabla que vas a modificar antes de hacer ningún query contra la misma.
Otra opción quizá más elegante es: crear, en el mismo sitio donde tienes el single.php de tu theme, otro archivo, copia del single, que se llame attachment.php y en él borres el formulario de comentarios. Una vez hecho esto ese será el archivo php que se cargará para mostrar la imagen (por la jerarquía de themes de wordpress) y por tanto puedes hacer en él las modificaciones que consideres necesarias, por ejemplo, modificar el formulario para eliminar los campos de introducción de comentarios.

Si optas por la opción de cerrar los comentarios de los post de tipo attachment mediante el query sql recuerda que de vez en cuando lo tendrás que volver a ejecutar para las nuevas imágenes que subas.

Y hasta aquí el briconsejo sólo para amigos del wordpress de hoy 😉

Anuncios

WPtouch y antispam por campo oculto

En los blogs y en cualquier web que permita dejar comentarios, uno de los problemas que tenemos siempre es el spam. Cada uno buscamos la mejor manera de lidiarlo con captchas, plugins… en mi caso opté por un remedio “casero” que encontré en Sigt y del que ya os hablé una vez: el sistema antispam del campo oculto. Técnicamente no es muy complicado de implementar (si no te paraliza el tener que tocar un php) y su efectividad es pasmosa, yo al cabo de un año recibo menos comentarios spam que otros blogs de un nivel similar en un día. Por si acaso también tengo una segunda barrera con el plugin akismet pero pocas veces ha tenido que actuar (menos de 200 comentarios spam en más de 2 años).

Otra adaptación que es muy conveniente hacer en cualquier web en el año 2011 es tener una versión para móviles: cuando detectamos que el visitante está utilizando un dispositivo móvil le presentamos un diseño adaptado para estos dispositivos, en general con un contenido algo más ligero para facilitar la velocidad de carga y la navegación por el sitio. En wordpress tenemos un plugin que hace ese trabajo por nosotros wptouch, con solo activar el plugin ya tenemos nuestra versión móvil disponible.

Y en la intersección de WPtouch y sistema antispam del campo oculto es donde he detectado un problema: los visitantes con dispositivos móviles no pueden dejar comentarios

Una de las cosas que hacemos al implementar el antispam es modificar el comments.php de nuestro theme y una de las cosas que utiliza wptouch es aplicar su propio theme (con su comments) cuando el visitante llega con un móvil, por lo que hay que modificar el comments.php que viene incluido dentro del plugin.

Lo primero es localizar ese archivo dentro de la carpeta del plugin. Lo encontraréis en

/wptouch/themes/default

Lo abrimos con un edito y buscamos el código correspondiente al formulario para dejar comentarios. Allí hacemos la siguiente sustitución:
las dos líneas donde pone

[php]

[/php]
las sustituimos por las tres líneas siguientes:
[php]

<input id="nombre" name="nombre" size="22" type="text" value="” tabindex=”2″ />

[/php]
Y listo.
El único inconveniente: cada vez que se actualice el wptouch tendremos que comprobar manualmente si esa modificación afecta o no al archivo comments.php y en caso de llegar modificado volver a hacer las adaptaciones
Nota: Si queréis ser más ortodoxos, en lugar de ese feo style=”display:none” podéis poner un class={hid} y en el archivo CSS del plugin definir esa clase hid con el atributo display=none, pero por lo que he comentado de las actualizaciones del plugin yo he preferido no hacerlo

Wordpress más seguro y cómo reaccionar a un ataque

Recientemente he recibido el que creo que es el primer ataque que lanzan contra este blog, algún amigo de lo ajeno ha conseguido la contraseña del usuario administrador, ha modificado algunos archivos de un plugin y ha colocado  un archivo con malas pulgas dentro del contenido del blog. Aparentemente no han roto nada más y creo que he conseguido repeler el ataque así que, a riesgo de enfadar más al atacante (que seguramente va a leer esto) os voy a contar mi experiencia por si le puede servir a alguien más.

Todo empezó cuando recibí un correo con este contenido

Contraseña perdida y cambiada para el usuario: dondado

Alguna otra vez había recibido correos de alguien que pedía el cambio de contraseña pero nunca de que efectivamente se había cambiado por lo que me preocupé y en cuanto tuve ocasión me puse a investigar qué pasaba. Descargué los logs de acceso al servidor apache y comienzo la investigación.

1. Retoma el control:

Entrar con el usuario y volver a pedir una nueva contraseña, una vez recibida acceder con ese usuario administrador al blog.
Desactivar todos los plugins por si han hecho cambios en ellos
Volver a cambiar la contraseña del administrador y ya de paso la cuenta de correo por si viene por ahí el fallo de seguridad.

2. Investiga qué ha pasado:

Acceder al log de acceso al servidor y buscar los accesos a wp-login.php y fijarse en la IP desde la que se han hecho el que se corresponda con la hora en que te llegó el correo del cambio de contraseña u otra hora en la que sepas que tú no has accedido.
Buscar todo lo que se haya hecho desde esa IP: en mi caso, además del cambio de contraseña, se ve que había modificado un plugin desde el editor de plugins de wordpress.
Con algún programa de comparación, compara los archivos que tenías (benditos backups) con los que han dejado los atacantes, así he detectado yo los cambios que habían hecho en el plugin simple-tags

3. Reforzar la seguridad.

A). Limitar los accesos al directorio wp-admin. Lo normal es que al panel de administración sólo entres desde tu casa, para ello basta con añadir, en el directorio /wp-admin/ un archivo con el nombre .htaccess con el siguiente contenido

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic

order deny,allow
deny from all
# whitelist Casa
allow from xxx.xxx.xxx.xxx
# whitelist Trabajo
allow from xxx.xxx.xxx.xxx

Sustituyendo las xxx.xxx.xxx.xxx por tus direcciones IP desde las que quieras acceder a la administración, por ejemplo la de casa y la del trabajo.

Si no sabes tu dirección IP puedes visitar, por ejemplo, esta dirección http://whatismyipaddress.com/ donde te la dicen o, si tienes cuenta de GMail, en la parte inferior aparece tu IP y pinchando en “información detallada”, un listado con las IPs desde las que has accedido últimamente a tu cuenta de gmail.
Ten en cuanto que muchos tenemos IPs dinámicas, es decir, que nuestro operador nos las cambia de vez en cuando, así que recuérdalo por si al cabo de unas semanas no consigues entrar ni siquiera tú. Una opción puede ser utilizar asteriscos en las dos últimos tramos de la IP, que es lo que suelen cambiar los ISP. La línea en ese caso te quedaría con la forma

allow from xxx.xxx.*.*

B) Deshabilitar los editores internos de wordpress, el editor de plugins y el editor de themes. No sé vosotros, pero yo, salvo en contadas ocasiones no los utilizo, así que más vale
tenerlos deshabilitados y reactivarlos sólo cuando sean necesarios. Para deshabilitarlos hay que añadir la siguiente línea en el archivo wp-config.php

define('DISALLOW_FILE_EDIT',true);

4. Volver a colocar las cosas en su sitio.

Hay que ser desconfiado y no dar por sentado que hemos encontrado todo lo que han modificado, más vale prevenir.
Volver a descargar todos los plugins desde la página de wordpress, borrar los que tienes instalados actualmente y volverlos a instalar.
Descargar la última versión de wordpress y volver a hacer una instalación limpia. Si como yo, además hacéis las actualizaciones de vuestro WP sólo de forma incremental es conveniente hacer esto de vez en cuando para eliminar posibles archivos que hayan quedado en desuso.

5. Paranoico de la seguridad

Si lo han intentado una vez es muy posible que vuelvan así que es mejor estar preparado esperándoles:

  • Crea un nuevo usuario con permisos de administrador que sea distinto del que utilizas para escribir en el blog, una vez creado, identifícate con él y cambia los permisos de tu usuario normal, el que conoce la gente, para que sea tan solo editor. A partir de ahora tendrás que pensar qué vas a hacer cuando entres al blog, escribir, administrar entradas y comentarios  (para esto utiliza el viejo usuario que ahora sólo es editor) o cambios de plugins, opciones, aspectos… para eso sí tendrás que entrar con el nuevo usuario administrador.
  • Cambia la contraseña de la base de datos del blog.
  • Cambia la contraseña del correo electrónico que tienes asociado al usuario del blog.
  • Cambia las claves secretas del wp-config.php:
define('AUTH_KEY', 'xxxxxxxxx');
define('SECURE_AUTH_KEY', 'xxxxxxxxxxxx');
define('LOGGED_IN_KEY', 'xxxxxxxxx');
define('NONCE_KEY', 'xxxxxxxxxxx');

Para generar unas nuevas visita el generador aleatorio de claves de WP y copia y pega sobre tus anteriores líneas del wp-config.php
Aún no he logrado averiguar cómo consiguieron acceso a mi blog en su primer intento (en el segundo no lo consiguieron). Puede que sea una vulnerabilidad no descubierta de wordpress aunque me inclino a pensar que sea algo más concreto de mi instalación, por ejemplo, las claves del wp-config.php no las cambiaba desde que las puse hace muchos meses (cuando salió la versión 2.6), quizá incluso tenía unas claves genéricas copiadas de algún sitio que les facilitaban conseguir la key para acceder a la administración. Quién sabe, espero no volver a llevarme sustos como este ¿Y tú, has sufrido algún intento de ataque de tu blog?.

Por último agradecer a la gente de Iteisa su interés y ayuda para conseguir salir de este entuerto.

Foto original de Dunechaser

Actualizaciones incrementales de Wordpress

Recientemente han liberado la versión 3.0.1 de wordpress y hemos tenido que actualizar nuestros blogs los que utilizamos este sistema de publicación y nos preocupamos por mantener al día todas las actualizaciones de seguridad. WordPress desde hace tiempo ofrece un cómodo botón en el panel de administración que con solo pulsar hace todo el proceso de actualización sin intervención por nuestra parte pero por desgracia a muchos no nos funciona; la razón no la sé exactamente pero por lo que he leído se debe a la configuración de PHP que cada uno tenga en su servidor. En mi caso es un plan 90 en OVH y nunca he conseguido que funcione, al igual que también me falla la actualización de algunos plugins.

Si como yo te ves obligado a actualizar mediante FTP (“classic style”) tal vez te interese actualizar de forma incremental, es decir, obtener un archivo zip con sólo las diferencias entre las versiones y machacar con él la instalación lo que supone un ahorro tremendo de tiempo.

Ventajas:

  • Muchísimo más rápido que una actualización completa
  • Si tienes archivos modificados del core ves de un plumazo si la modificación te afecta o no, y si no te afecta no tendrás que retocarlos.

Inconvenientes:

  • El trac, el lugar de donde se obtienen las diferencias, es sobre la versión inglesa, por lo que si actualizas así perderás la traducción al español si es que la tenías instalada. Esto lo notarás más o menos según los archivos con texto en castellano que se incluyan en la nueva versión.
  • En el caso de que WP dejase de utilizar algún archivo se te quedará “muerto” en el servidor.

Teniendo en cuenta todo esto yo recomiendo utilizarlo sólo en los cambios menores de versión (los que afectan al tercer número, ejemplo, pasar de 3.0.0 a 3.0.1) y hacer una actualización completa cuando el cambio sea de más calado (cambie alguno de los dos primeros dígitos).

¿Cómo se hace la actualización incremental?

Debes ir al trac de wordpress a obtener las diferencias. Una vez allí rellenas el from con: /tags/número_versión_vieja y el to con: /tags/numero_version_nueva dejando los campos de revisión en blanco. Mira la imagen siguiente que vale más que mil palabras:

En la página de resultados que te aparecerá, abajo del todo, tienes el archivo en formato zip que debes descargar. Una vez descomprimido está listo para actualizar.

El mérito de la entrada para Neri que fue quien me enseñó que existía esta posibilidad, hoy me he acordado y lo he reescrito aquí para que no se me olvide la próxima vez, un saludo pibe, un auténtico fenómeno en WordPress.

Para solteros y encargados de su casa (ellos y ellas)

Limpio Mi casita

Limpio Mi casita

¿Quién que sea am@ de casa, en su faceta soltero o en pareja no ha tenido a veces dudas sobre cómo se hace algo en el hogar? Normalmente para eso están las madres, pero si no es el caso, o ella ya se ha cansado de contestar tus dudas, o tu orgullo te impide preguntarle una vez más he encontrado una solución: limpiomicasita.com

El nombre es un poco cachondo pero lo cierto es que la web tiene un diseño muy muy agradable y navegando un poco por ella se encuentran cosas muy interesantes y sobretodo, muy bien organizadas, para que consultarlas sea sencillo. Tienen categorías de:

  • Limpieza: con trucos para cada rincón de la casa y para las manchas especiales de ropa.
  • Cocina: con recetas organizadas según el tipo de menú que quieras preparar.
  • Organización y trucos para la casa…

La web aparentemente está pensada para mujeres, pero francamente, creo que los solteros son un público que lo va a agradecer mucho más.

Técnicamente es en realidad un blog de WordPress, pero la personalización es tan completa que se te puede llegar a olvidar, un gran ejemplo de lo que se puede llegar a hacer con un WordPress si se deja en buenas manos. Sólo una pega, además de limpiar la casa hay que mantener al día el código, deberían actualizar a una versión más reciente de WordPress.

Echadle un vistazo a limpiomicasita.com, seguro que encontráis algún truquito interesante o al menos véis un diseño muy bien traído.

Corregir viejos enlaces en Wordpress

broken_linkParece que es inminente (de hecho ya ha empezado) que Google haga cambios importantes en la forma que tiene de rastrear la web para seleccionar qué es lo que debemos encontrar cuando busquemos algo. Uno de los parámetros que anuncian (puros rumores en realidad porque Google todo lo hace en secreto) va a ser premiar a las webs sin enlaces rotos, o mejor dicho, penalizar a las que sí los tengan. Si como yo tienes muchas entradas (en mi caso más de 1.000 ya) resulta imposible revisar todos los enlaces manualmente, pero en WordPress ya se sabe que siempre hay un plugin que puede ayudarte.

Las ventajas de tener ‘saneados’ tus enlaces son:

  • Menos decepciones y pérdidas de tiempo para tus lectores
  • Sumar puntos para Google
  • Detectar errores: tal vez te equivocaste al escribir aquella URL
  • Ayudar a otros blogs (los enlazados) a descubrir fallos en sus propias webs
  • … y un extra: revisar tus antiguos post, tal vez alguno ya esté obsoleto y además siempre es gracioso ver cómo uno mismo va evolucionando

El plugin que nos va a facilitar el trabajo es Broken Link Checker. La instalación es sencilla (como casi todos los plugins) y el funcionamiento también.

Una vez activado él solo recorrerá todos los enlaces del blog (a mi me ha detectado más de 5000 diferentes) y nos listará aquellos que estén rotos y también, en una lista aparte, aquellos que redirijan, es decir, que nosotros apuntemos a un sitio pero ellos acaben otro; posiblemente nos interese apuntar directamente al destino.

Después, desde la sección de Herramientas –> Enlaces rotos podemos acceder a las listas y desde ahí mismo desenlazar, cambiar la URL o editar el post (o descartarlo, si quieres que el plugin no te vuelva a avisar de ese enlace en concreto).

A mi me funciona estupendamente pero dos recomendaciones:

  • el plugin utiliza las librerías de curl que no están disponibles en el 100% de los hosting aunque sí en la mayoría, si no funciona tal vez sea por eso.
  • Ajusta bien las opciones de tiempo, si le das rienda suelta y andas un poco justito de hosting podría provocar demasiados accesos a la base de datos y provocar pequeñas caídas del blog.

Enlace de descarga del plugin: Broken Link Checker.

Foto original de PAUL

Aviso importante antes de actualizar WP-SuperCaché a la versión 0.9.2

Parece que la versión 0.9.2 del plugin WP-SuperCaché tiene un problema con la actualización automática. Antes de actualizarlo es necesario que desactives el cacheado (o desactives el plugin), borres de la carpeta de caché todos los archivos y después actualices, así no tendrás problemas.

En mi caso no tuve que hacerlo y funcionó a la primera pero parece que hay unos cuantos servidores que se han venido abajo por exceso de consumo de recursos.

Vía: un tweet de mangas verdes uno de los sitios que ha sufrido el problema