Cómo mejorar la seguridad de los foros phpBB2

Actualización: en la rama 3 de phpbb probablemente no haga falta hacer todo ésto.

Mientras esperamos la salida de la versión 3 de los foros en phpBB, los administradores vemos cómo de un tiempo a esta parte somos acosados por el spam. Tener un foro en el que un usuario no registrado pueda escribir se ha convertido casi en una utopía, los spammers se las saben todas y para hacer su publicidad han ideado maneras de registrar usuarios muy elaboradas. Ya hay mucha gente que no permite el registro sino que mete los usuarios a mano.

Vamos a ver, este tipo de inventos (cms, foros…) se inventaron para que todo fuera fácil y cómodo y que haya unos cuantos dedicados a vender sus métodos para llenarte un foro de basura debe tener remedio. Después de probar varias soluciones (The Humanizer quizá sea la más conocida) creo que lo mejor que podemos hacer es trabajar más los captchas, es por eso que la comunidad de modificaciones de phpbb ha sacado Better Captcha, que si no me equivoco es la tecnología que traerá la versión tercera. De momento, en 24 horas no se me ha registrado ningún usuarios de spam, cuando la media anterior era de dos o tres diarios.

Al grano, que me lío.

  • Para instalar better captcha, vamos a descargar la última versión
  • Nos descargamos y descomprimimos el zip.
  • Copia todos los archivos que hay dentro del directorio root/includes que acabas de descomprimir en el directorio includes de tu foro.
  • Crea una copia de seguridad del archivo profiles.php por si las moscas y ábrelo (el original).
  • Busca el texto: include($phpbb_root_path . 'includes/usercp_confirm.'.$phpEx);
  • Sustitúyelo por: include($phpbb_root_path . 'includes/usercp_captcha.'.$phpEx);
  • Guarda los cambios y súbelos al servidor.

¿Fácil, verdad?

Ahora sólo tienes que estar atento, por si alguna de las actualizaciones de phpbb2 cambia ese archivo, ya que se perdería la mejora.

Una última cosa, quizá te parezca mal que los datos de tus usuarios registrados sean públicos, personalmente, a mi no me gusta que las direcciones de correo de tanta gente sean accesibles, así que para que la lista de miembros sea visible sólo para registrados tienes que hacer lo siguiente:

  • Abre el archivo memberlist.php
  • Busca: // End session management
  • Justo debajo añade:
    if ( !$userdata[‘session_logged_in’] )
    {
    redirect(append_sid(“login.”.$phpEx.”?redirect=memberlist.”.$phpEx, true));
    exit;
    }

Ten cuidado, igual que en el caso anterior, una actualización podría echar a perder estos cambios.