Permítanme comenzar diciendo que conozco los beneficios de una base de datos, pero esa no es la cuestión. Quiero saber si la seguridad tiene sentido con un beneficio adicional de la velocidad.
Usando PHP 7.0,
Prueba 1: tengo una configuración de base de datos con una tabla llamada usuario, con un campo de identificación y una contraseña para un ejemplo. Utilizo la extensión PDO para consultar la base de datos por ID. La solicitud tomó o 0.0005719 microsegundos para completar.
Prueba 2: leí un archivo local que todo lo que contiene es una contraseña con hash.
La solicitud tarda 0.00005912 microsegundos en completarse.
Tenga en cuenta: en ambos casos, las contraseñas se procesan mediante la función hash de contraseña de php. Como este es un cuarto de seguridad, quiero decir eso también. También para la concurrencia, se considera que el archivo es seguro para que lo lea solo una persona a la vez al iniciar sesión solamente.
De cualquier manera, ya que se usaría solo para iniciar sesión, no para obtener detalles, ¿sería seguro? (Los archivos NO se almacenan en la raíz web). Así que alguien necesitaría un inicio de sesión en el servidor, o php actuando como un intermediario para leer el archivo. La base de datos es mysql y requiere un inicio de sesión del servidor más un inicio de sesión mysql.
Pregunta: ¿los beneficios de velocidad para usar un archivo en lugar de una base de datos justifican una buena base para usar un archivo o mantenerlo en la base de datos? ¿Esto plantea algún riesgo de seguridad en un entorno de producción?
Actualización - 23-02-2017 Déjame decirte algunas cosas. 1, un usuario "completo" no se almacena en el archivo, solo una contraseña ya está oculta. No hay necesidad de indexadores porque cuando un usuario inicia sesión en un hash md5 del nombre de usuario se dirige directamente a un archivo en el sistema local. (El nombre de usuario no puede ser cambiado). Esto permitiría un inicio de sesión rápido, sin una consulta de base de datos. 2, la prueba se realizó con los datos ya almacenados justo el momento en que se probaron los datos. 3, es microsegundos, según php microtime. La operación se repitió 100 veces, luego se tomó una diferencia y se promedió. 4, esto es estrictamente hipotético.