Archivo de la categoría: Bases de Datos

Reparar tablas dañadas desde phpMyAdmin

Publicado el en la categoría Bases de Datos

Reparar tablas dañadas desde phpMyAdminA día de hoy, es muy extraño encontrar algún CMS que no funcione junto a una base de datos. La mayoría de ellos trabajan conjuntamente con MySQL y aunque MySQL es un potente gestor de bases de datos, no está exento de errores, y es posible que con el tiempo o el uso intensivo de nuestra aplicación web, se generen incoherencias e incluso se produzca algún error que deje a nuestra web sin funcionamiento. Afortunadamente MySQL dispone de herramientas que pueden detectar y reparar estos errores. Podemos utilizar mysqlcheck desde la consola o terminal de nuestro equipo, o bien mediante interfaz gráfica. En el artículo de hoy, vamos a ver como reparar tablas dañadas desde phpMyAdmin. Sigue leyendo

Facebooktwittergoogle_plus

Problemas con las mayúsculas y minúsculas en tablas MySQL

Publicado el en la categoría Bases de Datos

Problemas con las mayúsculas y minúsculas en tablas MySQLEn numerosas ocasiones os hemos comentado la necesidad de trabajar y/o hacer pruebas en un entorno local en lugar de hacerlo directamente en el sitio en producción. Lo habitual es instalar un servidor web local y descargar los archivos y la base de datos para luego crearlo en nuestro sitio web de pruebas. De igual forma, puede darse contrario, de haber creado un sitio en local, y una vez terminado, queremos subirlo a nuestro servidor.

Sea cual sea la forma de traspasar los datos, puede darse el caso que nuestra web muestre errores o no funcione correctamente. Una de las causas que han podido provocar esta situación es el diferente uso que hacen los sistemas operativos con las mayúsculas y minúsculas. Si te has encontrado en esta situación, te recomendamos la lectura del siguiente artículo en el que te mostramos como solucionar los problemas con las mayúsculas y minúsculas en tablas MySQL. Sigue leyendo

Facebooktwittergoogle_plus

Cambiar la contraseña de la base de datos desde Plesk

Publicado el en la categoría Bases de Datos, Seguridad

Cambiar la contraseña de la base de datosEl tema de las contraseñas es bastante delicado, y suele ocurrir que tengamos una misma contraseña para diversos servicios. Un caso bastante común es que tengamos contraseñas muy fáciles o con pocos caracteres que pueden ser fácilmente captadas por usuarios malintencionados, provocándonos diversos problemas. Si te encuentras en una de estas situaciones y quieres aumentar la seguridad de servidor, te vamos a mostrar como cambiar la contraseña de la base de datos y así intentar complicar un poco el acceso a usuarios ajenos a nuestro sistema. Sigue leyendo

Facebooktwittergoogle_plus

Detectados fallos de seguridad en phpMyAdmin

Publicado el en la categoría Bases de Datos, Seguridad

Detectados fallos de seguridad en phpMyAdminPhpMyAdmin es una aplicación web muy popular, destinada facilitar la administración de la base de datos MySQL. Gracias a phpMyAdmin, se pueden gestionar fácilmente tareas que directamente vía consola, resultarían bastante tediosas.

Recientemente se han descubierto varias vulnerabilidades que pueden poner en peligro la información de las bases de datos a las que administran. La peligrosidad de los fallos de seguridad detectados, radica en que esta aplicación es muy popular y está muy extendida entre los usuarios. Por ello, ataques a esta plataforma comprometerían a un gran número de usuarios. Sigue leyendo

Facebooktwittergoogle_plus

Nuevos comandos para Centos 7

Publicado el en la categoría Bases de Datos, General, Linux, VPS

centosLa nueva versión de CentOS 7 introduce un cambio en uno de los comandos más utilizados, service, que es sustituido por systemctl.

Por el momento el comando service continua funcionando, aunque cada vez que lo ejecutemos nos aparecerá un mensaje recordando el nuevo comando, ya que en futuras versiones será finalmente eliminado. Sigue leyendo

Facebooktwittergoogle_plus

¿Qué es la inyección SQL?

Publicado el en la categoría Bases de Datos, Diseño y Programación, General, Seguridad

SQL_InjectionLa inyección SQL es uno de los mecanismos de ataque más comunes a nivel de aplicación que aprovechan fallos en la programación y agujeros de seguridad para lograr acceso a la base de datos de una web y ejecutar cualquier comando SQL sobre la misma.

Hoy en día las páginas web suelen ir ligadas a una base de datos, la cual es central para el funcionamiento de la misma ya que guarda la mayoría de contenido de la misma así como la información necesaria para su funcionamiento, credenciales de acceso de los usuarios, datos privados de estos, información de pagos, estadísticas, etcétera. Toda esta información es mostrada, cambiada o borrada de forma controlada a través del interfaz, que es la propia web.

Y es la propia web el principal vector de ataque usado para inyectar SQL. Al igual que en los ataques XSS, una mala seguridad se traduce en que un atacante pueda introducir código malicioso. Este código puede realizar cualquier acción en la base de datos, por lo que el atacante puede, por ejemplo, lograr autentificarse como otro usuario sin conocer su contraseña, otorgarse permisos de administrador, manipular cualquier registro, obtener cualquier dato o borrar cualquier registro, incluso eliminar todas las tablas de la base de datos.

Vamos a ver un ejemplo de vulnerabilidad y ataque de inyección SQL. Tenemos un formulario de login en nuestra web y ejecutamos la siguiente consulta para comprobar los credenciales enviados:

SELECT * FROM usuarios WHERE nombre = '$usuario' AND password = '$password’

Si en el formulario ponemos como nombre=Juan y como contraseña=algo’ OR ‘x’ = ‘x’, la consulta quedaría así:

SELECT * FROM usuarios WHERE nombre = 'Juan' AND password = 'algo' OR 'x' = 'x'

La parte de la consulta ‘x’ = ‘x’ siempre será evaluada como verdadera, por lo que el atacante podría saltar la comprobación de login.

Evidentemente, una vulnerabilidad en nuestro código que permita la inyección SQL es un riesgo enorme. Para evitarlo, las técnicas varían según en qué lenguaje estemos programando. En el contexto web, lo más probable es que sea PHP.

En PHP, desde la versión 5.5 las funciones mysql_* están deprecated (anticuadas y en proceso de desaparición), y a partir de la versión 7 serán eliminadas, en favor del uso de las funciones mysqli o de PDO, siendo estas últimas las más recomendadas. Para evitar la inyección SQL en PHP, PDO permite usar la técnica de parametrización de consultas, con la cual los parámetros de la consulta son saneados de forma automática mediante la función bindParam() imposibilitando la inyección de código, además quedando mejor a nivel de claridad de código.

$stmt = $dbh->prepare("INSERT INTO usuarios (nombre, password) VALUES (:nombre, :password)");
$stmt->bindParam(':nombre', $nombre);
$stmt->bindParam(':password', $password);

En el caso de usar CMS como WordPress, Joomla!, etcétera, lo recomendable es mantenerlos siempre al día, tanto el propio CMS como sus plugins y themes, ya que los equipos que los desarrollan suelen parchearlos en cuanto son detectados.

Para aquellos que quieran aprender más y prevenir estos ataques, el OWASP (Open Web Application Security Project) cuenta con guías avanzadas para la prevención de la inyección SQL, además de otros tipos de agujeros de seguridad.

Facebooktwittergoogle_plus

Cómo poner el tema por defecto de WordPress sin acceso al panel de administración

Publicado el en la categoría Aplicaciones, Bases de Datos, General

themesEn el anterior post hemos visto cómo desactivar plugins sin tener acceso al panel de administración, después de ver las ventajas e inconvenientes de que WordPress tenga disponible una gran cantidad de plugins al alcance de unos clicks. Los temas tienen exactamente las mismas ventajas y mismos problemas: gran variedad a costa de poco control de calidad.

Esto no significa que no haya temas y plugins de gran calidad, pero sí que tenemos que andar con ojo, informarnos sobre el tema/plugin y no instalar lo primero que nos llame la atención sin investigar primero.

Igual que los plugins, un tema de WordPress puede dejarnos “tirados” por distintos motivos, por ejemplo que hayamos tocado algo que no debíamos editando un archivo, que hayamos subido algo mal, o a medias, al FTP, etc, lo cual puede dejar la web inoperativa y quedarnos sin acceso al panel de administración.

Vamos a ver las dos técnicas para solucionar el entuerto y volver al tema por defecto cuando no tenemos acceso al panel de administración:

  • Poner el tema por defecto desde la base de datos: accedemos a la base de datos, podemos hacerlo desde Plesk, pinchando en bases de datos y después en Webadmin en la base de datos donde esté instalado WordPress, de forma que se abre phpMyAdmin. Vamos a la tabla wp_options y buscamos los valores template y stylesheetCaptura de pantalla 2015-07-14 a las 15.44.58En este caso tenemos activo un tema llamado “mont-blanc”. Editamos ambos valores cambiándolos por “default”, guardamos y ya tenemos el tema por defecto de WordPress.
  • Poner el tema por defecto desde el FTP: entramos al FTP donde esté instalado WordPress y buscamos la carpeta wp-content, entramos a ella y cambiamos el nombre de la carpeta themes a themes_original. Entramos al panel de administración y en la sección de temas nos mostrará errores y dirá que nos devuelve al tema por defecto. Volvemos al FTP y cambiamos el nombre de la carpeta themes_original a themes y al acceder de nuevo a la web, debería cargar el tema por defecto.

Ejecutar correctamente una de estas dos técnicas puede sacarnos de un apuro importante. Descubre también cómo desactivar plugins de WordPress sin tener acceso al panel de control.

Facebooktwittergoogle_plus

Cómo desactivar plugins de WordPress sin acceso al panel de administración

Publicado el en la categoría Aplicaciones, Bases de Datos, General

wordpresspluginsUna de las grandes ventajas de WordPress es la gran cantidad de plugins que hay disponibles. Podemos encontrar plugins casi para cualquier cosa que se necesitemos, sin embargo, esto puede ser también un inconveniente ya que debido a que hay tantos plugins, el control sobre la calidad de estos no la presencia que desearíamos. Lo mismo ocurre con los temas.

Muchas veces tras instalar un plugin o un theme, el panel de administración puede volverse extremadamente lento (dificultando muchísimo el trabajo) o puede incluso imposibilitar la entrada al mismo, sin que este ofrezca pistas sobre qué está fallando. Además, lo más seguro es que no falle  nada más instalarlo, de forma que no podemos identificar el plugin problemático al instante, ya que suele ocurrir al cabo de un tiempo.

La única manera de recuperar el acceso es desactivar el plugin o theme problemático, pero, ¿cómo hacerlo sin tener acceso al panel de administración? Existen dos técnicas para ello.

  • Desactivar plugins por FTP:

Accedemos por FTP a la carpeta donde esté instalado WordPress. Una vez dentro, vamos a la carpeta wp-content, buscamos la carpeta plugins, le cambiamos el nombre a plugins_originales y creamos una nueva carpeta con nombre plugins.

Una vez hecho esto, entramos de nuevo al panel de administración de WordPress, y en la sección de plugins veremos varios avisos diciendo que los plugins han sido desactivados debido a un error.

Captura de pantalla 2015-07-10 a las 16.31.11Ahora que han sido desactivados por WordPress, hacemos la operación contraria. Borramos la carpeta plugins que hemos creado, que está vacía, y renombramos la de plugins_originales a plugins, y entramos de nuevo al panel. Veremos que nos salen los plugins pero desactivados, de forma que podemos ir activándolos uno por uno hasta dar con el problemático y desinstalarlo una vez lo identifiquemos.

  • Desactivar plugins desde la base de datos:

Accedemos a la base de datos a través de Plesk o desde algún programa de gestión de bases de datos y buscamos la tabla wp_options y dentro de ella la entrada active_plugins, que tendrá un valor parecido a este:

Captura de pantalla 2015-07-10 a las 16.39.24

El valor option_value contiene los plugins activos, para desactivarlos todos cambiamos el valor al siguiente:

a:0:{}

Al acceder de nuevo al panel de WordPress, todos los plugins estarán desactivados y podremos empezar con la identificación del problemático y proceder a su desinstalación.

En la próxima entrada veremos cómo desactivar un tema problemático.

Facebooktwittergoogle_plus