Prácticas recomendadas contra el hacking

lunes, 30 de marzo de 2009

Hoy en día la mayoría de las páginas web se construyen en torno a aplicaciones que proporcionan servicios de calidad a los usuarios. En concreto, se utilizan mucho para crear, editar y administrar el contenido. Debido a la naturaleza interactiva de estos sistemas, donde el contenido de los usuarios es fundamental, es importante pensar en la seguridad a fin de evitar ataques por parte de terceros, así como para garantizar una buena experiencia a los usuarios.

Algunos tipos de intentos de hacking y cómo prevenirlos

Hay muchos tipos diferentes de ataques que los hackers pueden llevar a cabo para controlar total o parcialmente un sitio web. En general, los más comunes y peligrosos son los de inyección de SQL y de cross-site scripting (XSS).

La inyección de SQL es una técnica que inyecta código malicioso en una aplicación web, aprovechando una vulnerabilidad en seguridad a nivel de base de datos, con la intención de cambiar su funcionamiento. Es una técnica poderosa, ya que puede manipular tanto las URL (cadenas de consulta) como cualquier otra formulario (registro de correo electrónico, inicio de sesión, búsqueda) para inyectar código malicioso. Puedes encontrar algunos ejemplos de inyección de SQL en el Web Application Security Consortium [inglés] .

Hay algunas precauciones que pueden tomarse para evitar este tipo de ataques. Por ejemplo, es una buena práctica agregar una capa entre un formulario visible y la base de datos. En PHP, la extensión PDO [inglés] se usa a menudo para trabajar con parámetros (a veces llamados variables bind o placeholder) en lugar de incrustar el contenido del usuario en la declaración. Otra técnica muy fácil es escapar caracteres, donde todos los caracteres peligrosos que pueden tener un efecto directo sobre la estructura de base de datos se escapan. Por ejemplo, cada comilla simple ['] en un parámetro se debe sustituir por dos comillas simples [''] para formar una cadena literal de SQL válida. Estas son sólo dos de las acciones más comunes que puedes tomar para mejorar la seguridad de un sitio web y evitar las inyecciones SQL. En Internet puedes encontrar muchos recursos que se ajustan a tus necesidades (lenguajes de programación, aplicaciones web específicas, etc).

La otra técnica de la que vamos a hablar aquí es cross-site scripting (XSS). XSS es una técnica que inyecta código malicioso en una página web, aprovechando una vulnerabilidad de seguridad de las aplicaciones. Este tipo de ataque es posible cuando una aplicación web procesa datos obtenidos a través del contenido introducido por los usuarios y sin ningún tipo de verificación o validación antes de devolver datos al usuario final. Puedes encontrar algunos ejemplos de cross-site scripting en el Web Application Security Consortium [inglés] .

Hay muchas maneras de proteger una aplicación web de esta técnica. Algunas de las acciones más sencillas que se pueden llevar a cabo son:
  • Extracción de los datos que se pueden insertar en un formulario (por ejemplo, consulta la función strip tags [inglés] en PHP);
  • Utilización de los datos de codificación para evitar la inyección directa de caracteres potencialmente maliciosos (por ejemplo, véase la función htmlspecialchars [inglés] en PHP);
  • Creación de una capa entre la entrada de datos y el final del proceso (back-end) para evitar la inyección directa de código en la aplicación.
Algunos recursos sobre seguridad en CMS

La inyección de SQL y de cross-site scripting son sólo dos de las muchas técnicas utilizadas por los hackers para atacar y explotar sitios inocentes. Como norma general en materia de seguridad, es importante estar siempre actualizado sobre estas cuestiones y, en particular, cuando se utiliza software de terceros, para asegurarte de que has instalado la última versión disponible. Muchas aplicaciones web están construidas en torno a las grandes comunidades, que ofrecen apoyo y actualizaciones constantes.

Por ejemplo, cuatro de las mayores comunidades de sistemas de gestión de contenidos de código abierto (Joomla, Wordpress, PHP-Nuke y Drupal) ofrecen indicaciones de seguridad en sus sitios web y albergan una gran comunidad de foros en los que los usuarios pueden exponer sus problemas así como buscar ayuda. Por ejemplo, en la sección Hardening WordPress [inglés] de su sitio web, WordPress ofrece una amplia documentación sobre cómo fortalecer la seguridad de tu CMS. Joomla ofrece muchos recursos de seguridad, en particular, una lista completa de tareas [inglés] que los webmasters deberían realizar para mejorar la seguridad de un sitio web basado en Joomla. En el sitio de Drupal, tienes acceso a información sobre seguridad en la sección Security [inglés] . También puedes suscribirte a su lista de correo sobre seguridad que se actualiza constantemente con temas actuales. PHP-Nuke ofrece documentación sobre seguridad [inglés] en el capítulo 23 de su sección How to, dedicada a la gestión del sistema de esta plataforma CMS. También tienen una sección llamada Hacked - Now what? [inglés] , con directrices para resolver los problemas relacionados con el hacking.

Algunas formas de identificar el pirateo de su sitio

Como ya se ha mencionado, existen muchos tipos diferentes de ataques que hackers informáticos pueden realizar en un sitio web y hay diferentes métodos para aprovecharse de un sitio web inocente.

Cuando los hackers son capaces de tomar el control completo de un sitio, lo pueden desfigurar (cambiando la página de inicio), borrar todo el contenido (bajando las tablas de tu base de datos), o insertar un programa malicioso o un roba cookies. También pueden utilizar un sitio para web spam, ocultando los enlaces que apuntan a recursos spam o la creación de las páginas que redireccionan a sitios con malware. Cuando estos cambios son evidentes (como cuando las desfiguran), puedes darte cuenta fácilmente de esta actividad, pero hay otros tipos de ataques, en particular aquellos con intención de spam, que no serán tan evidentes. Google, a través de algunos de sus productos, ofrece a los webmasters algunas formas de detectar si un sitio web ha sido hackeado o modificado por un tercero sin autorización. Por ejemplo, mediante el uso de Google Search puedes detectar las típicas palabras claves añadidas por los hackers a tu sitio web e identificar las páginas afectadas. Simplemente abre google.com y busca con site: en tu sitio web, buscando por palabras clave comerciales que utilizan los hackers para spam (como viagra, porno, mp3, apuestas, etc):

[site:example.com viagra]

Si no estás familiarizado con el operador de búsqueda site:, esta es una forma de consulta en Google que restringe tu búsqueda a un sitio web específico. Por ejemplo, la búsqueda site:googleblog.blogspot.com sólo devolverá los resultados del blog oficial de Google . Al añadir palabras clave spam a este tipo de consulta, Google mostrará todas las páginas indexadas de tu sitio web que contienen las palabras clave spam y que están, muy probablemente, hackeadas.

Para comprobar estas páginas sospechosas, simplemente abre la versión caché propuesta por Google y serás capaz de detectarlas, si es que las hubiese. Entonces, podrás limpiar tus páginas afectadas y además mirar si existe alguna anomalía en los archivos de configuración de tu servidor web (por ejemplo, en servidores web Apache: .htaccess y httpd.conf). Si tu sitio no aparece en los resultados de búsqueda de Google, podría significar que Google ya ha descubierto las malas prácticas en tu sitio web como consecuencia del ataque y podría haberlo quitado temporalmente de nuestro índice, debido a la violación de nuestras directrices de calidad para webmasters .

A fin de mantener siempre un ojo en la presencia de palabras clave sospechosas en tu sitio web, puedes también utilizar las alertas de Google para supervisar búsquedas como: site:example.com viagra O casino O porno O tonos web: recibirás un aviso por correo electrónico siempre que estas palabras clave se encuentren en el contenido de tu sitio.

También puedes utilizar las Herramientas para webmasters de Google para detectar cualquier actividad hacking en tu sitio web. Las Herramientas para webmasters proporcionar estadísticas sobre las búsqueda más habituales de tu sitio. Esta información te ayudará a controlar si tu sitio web está mostrándose por palabras claves sospechosas no vinculadas con este.

La información en la sección "Lo que Googlebot ve" es también muy útil, ya que verás si Google detecta cualquier palabra clave inusual en tu sitio web, independientemente de si está mostrándose en los resultados por estas o no. Si tienes una cuenta de las Herramientas para webmasters y Google considera que tu sitio ha sido hackeado, a menudo se te notifica de acuerdo con el tipo de ataque que haya sufrido tu sitio web:
  • Si un tercero está utilizando tu sitio web para comportamientos spam (como la ocultación de enlaces o la creación páginas spam) y ha sido detectado por nuestro rastreador, a menudo se te notificará en el Centro de mensajes con información detallada (una de las URL hackeadas o texto ancla de los enlaces ocultos);
  • Si tu sitio es utilizado para colocar un programas maliciosos, como el malware, verás un aviso de malware en la página de "Vista general" en tu cuenta de las Herramientas para webmasters.
Comportamiento hackeado eliminado, ¿ahora qué?

¿Tu sitio web ha sido hackeado o está ofreciendo malware? Primero, limpia el malware y, a continuación, haz alguna de las siguientes cosas:
  • Si tu sitio web fue hackeado por razones de spam, por favor visita nuestra solicitud de reconsideración a través de las Herramientas para webmasters para solicitar la reconsideración de tu sitio;
  • Si tu sitio estaba sirviendo malware a los usuarios, por favor, envia una solicitud de reconsideración de malware desde la página "Visión general" de las Herramientas para webmasters.
Esperamos que encuentres estos consejos útiles. Si deseas compartir tus propios consejos o experiencias, te invitamos a dejar un comentario aquí. ¡Gracias!