Salta al contingut principal

Aumentar la seguridad de una base de datos en SQLite

Aumentar la seguridad de una base de datos en SQLite:
Invitado de lujo el que tenemos esta semana en nuestro blog, quien comienza con una serie de posts especiales relacionados con sus más recientes aportaciones a video2brain: José Vicente Carratalá, también conocido en la Comunidad v2b como «jocarsa». ¡Que lo disfruten!
¿Qué es SQLite?

SQLite es un sistema de gestión de bases de datos ligero, potente y rápido. Se basa en una base de datos situada en el sistema de archivos, generalmente con extensión *.db.
Entre sus ventajas, podemos enumerar la flexibilidad, la rapidez en los desarrollos y lo tremendamente fácil que es migrar una app web que use Sqlite: En la mayoría de los casos, copiamos y pegamos la aplicación en la nueva ubicación y funciona a la primera. Además, al ser una base de datos controlada enteramente por PHP, los hosting no suelen poner limitaciones en su uso.
Entre sus desventajas, podemos citar dos: En primer lugar no suelen aceptar usuario y contraseña. Y, lo más importante, al ser un tipo de base de datos basada en un archivo, este archivo se puede descargar directamente desde el navegador, comprometiendo la seguridad de nuestra aplicación.
Por ejemplo, en un sistema linux, la carpeta de publicación web suele estar en /var/www. En un sistema Windows, si usamos XAMPP, estaría en C:/XAMPP/htdocs/ Supongamos que, dentro de www creamos una carpeta llamada app, que contiene una carpeta llamada db, que a su vez contiene a la base de datos basededatos.db. La ruta completa desde el sistema de archivos sería:/var/www/app/db/basededatos.db en linux, y C:/XAMPP/htdocs/app/db/basededatos.db en Windows. En cualquiera de los dos casos, la ruta para acceder desde el exterior al servidor, sería: http://www.[dominio].[ext]/app/basededatos.db, lo que quiere decir que, en la práctica, cualquier persona que conozca el nombre y la ubicación de la base de datos, se la puede bajar simplemente llamándola desde cualquier navegador web. ¿Y que pasaría con cualquier persona que no conociera estos datos? Bueno, se podría programar un bot que se dedicara a ir probando hasta:

1.-Acertar la base de datos.

2.-Sobrecargar el servidor de peticiones.

(La creación de bots será tratada en un artículo futuro)
¿Qué podemos hacer para asegurar nuestras bases de datos en SQLite?

Un truco muy sencillo, si nuestro proveedor nos lo permite, o si estamos usando un servidor propio, es situar la base de datos en una carpeta externa a la carpeta www.

Por ejemplo, en un sistema linux, podemos crear la carpeta /var/db al lado (al mismo nivel) de la carpeta /var/www, o en un sistema Windows podemos crear la carpeta C:/XAMPP/db/ al lado de la capeta C:/XAMPP/htdocs. De esta manera, la carpeta /db ya no es accesible directamente desde el exterior.
¿Y cómo puede acceder nuestro programa a ella?

Supongamos el siguiente ejemplo:

La base de datos está en /var/db/basededatos.db

El script que quiere acceder a la base de datos está en /var/www/app/index.php
Dentro del script PHP, al conectar con la base de datos, solo tendríamos que escribir:

$conexion = sqlite_open(‹../../db/basededatos.db›);

Si estamos en la carpeta /var/www/app/index.php, el primer «../» hace que bajemos hasta /var/www/, el segundo «../» hace que bajemos hasta /var/, «db/» hace que entremos en /var/db/, y por último, seleccionamos la base de datos por su nombre.
Gracias a este sencillo truco, que básicamente consiste en sacar la base de datos SQLite de la carpeta pública, podemos seguir disfrutando de las ventajas de SQLite, a la vez que aumentamos su seguridad.
José Vicente Carratalá

Comentaris

Entrades populars d'aquest blog

15 Tutoriales CSS3 para mejorar tus paginas web

15 Tutoriales CSS3 para mejorar tus paginas web : Les dejo una pequeña recopilación de tutoriales CSS3 que espero sean de utilidad para ustedes, intentamos hacer una recopilación bastante completa para crear impresionantes diseños web con CSS3 y aprovechar las bondades de CSS3 incluso para aplicar efectos, son un total de 15 tutoriales CSS3 gratis . Crear menu dropdown con CSS3 Crear breadcrumbs con estilo Transiciones de paginas con CSS3 Crear timeline con CSS3 y jQuery Reproductor de video con HTML5, CSS3 y jQuery Crear efecto acordion CSS3 Aplicar degradado a texto Crear texto en curva con CSS3 y jQuery Aplicar textura a texto con Magic Pill Crear slider de imagenes con CSS3 y jQuery Rotar texto con CSS3 Crear menu vertical con CSS3 Crear formulario con HTML5 y CSS3 Crear efecto de imagenes apiladas con CSS3 Aplicar estilos para imagenes con CSS3  

Averiguar la Salud del Disco Duro, con Crystal Disk Info [Windows]

Averiguar la Salud del Disco Duro, con Crystal Disk Info [Windows] : El actual “cuello de botella” en nuestras PCs; es decir, donde todo el rendimiento de nuestra PC llega a estancarse , es en el Disco Duro. Si bien los procesadores han evolucionado considerablemente en velocidad / rendimiento, el RAM no sólo es más económico, sino más veloz, y las tarjetas de video siguen innovando con cada generación, los discos duros han permanecido idénticos desde hace años, limitados por la física. Y es que un disco duro tradicional sólo tiene un máximo de velocidad con el que puede girar (medido en revoluciones por minuto, o RPM) que, a su vez, limita la velocidad de lectura y escritura. En pocas palabras, a pesar de que nuestras PCs pueden procesar información mucho más rápido que hace 5 años, los discos duros siguen leyendo (y escribiendo) esta información prácticamente a la misma velocidad. Esto ha cambiado con la llegada de los SSD, los Discos de Estado Sólo que no están limitados por la velo...

Learn Composition from the Photography of Henri Cartier-Bresson

“Do you see it?” This question is a photographic mantra. Myron Barnstone , my mentor, repeats this question every day with the hopes that we do “see it.” This obvious question reminds me that even though I have seen Cartier-Bresson’s prints and read his books, there are major parts of his work which remain hidden from public view. Beneath the surface of perfectly timed snap shots is a design sensibility that is rarely challenged by contemporary photographers. Henri Cartier-Bresson. © Martine Franck Words To Know 1:1.5 Ratio: The 35mm negative measures 36mm x 24mm. Mathematically it can be reduced to a 3:2 ratio. Reduced even further it will be referred to as the 1:1.5 Ratio or the 1.5 Rectangle. Eyes: The frame of an image is created by two vertical lines and two horizontal lines. The intersection of these lines is called an eye. The four corners of a negative can be called the “eyes.” This is extremely important because the diagonals connecting these lines will form the breakdown ...