una sistema paso pagina formulario datos crear conexion conectar con como archivo php database linux security connection-string

php - sistema - pagina web con base de datos mysql



¿Cuál es la mejor manera de asegurar una cadena de conexión de base de datos? (3)

Estoy escribiendo un conjunto de aplicaciones basadas en bases de datos en PHP. Estas aplicaciones se ejecutarán en un servidor Linux como su propio usuario. Es probable que otros usuarios estén en el sistema a veces, pero tienen un acceso muy controlado. Otros servidores a los que no tendrán acceso en absoluto. También expondré una API de procedimiento almacenado de límite a los desarrolladores que necesitan escribir scripts de Perl que accedan a la base de datos usando un DBI y un conjunto de funciones que escribo.

Mi pregunta es ¿cuál es la mejor manera de proteger los archivos de configuración que tienen cadenas de conexión en ellos?

¿Es suficiente un usuario diferente con [4+] 00 permisos en el archivo? ¿Debería encriptarlos? Eso parece cambiar el problema a otra parte, por lo que me preocupa dónde almacenar una clave de cifrado. Me doy cuenta de que los desarrolladores de Perl necesitarán tener una cadena de conexión propia, ya que solo tendrán permisos para ejecutar la base de datos.


Aquí hay un enlace a un módulo gratuito de Apache que ayuda a administrar el acceso a una tienda de contraseñas:

http://uranus.it.swin.edu.au/~jn/linux/php/passwords.htm

Me parece un poco complicado y requiere ejecutar PHP en mod_php. Y aún no aborda la posibilidad de que personas no autorizadas que tienen acceso al servidor puedan leer su archivo de contraseñas.

Creo que debe confiar en los permisos de archivos y confiar en que las personas no autorizadas no tienen la capacidad de sudo UID de la aplicación PHP o en la raíz.


Hasta ahora, mi mejor solución ha sido almacenar archivos de configuración en una partición cifrada para que las personas con acceso directo a la máquina no puedan desconectar las contraseñas conectando la unidad a otra PC y con los permisos del sistema de archivos para que la gente no pueda leer el archivo desde el interior del sistema operativo en sí.

Sin embargo, debe comprender que no hay mucho que pueda hacer contra un atacante con acceso directo a la máquina. Si ejecuta el servidor de la base de datos, proteger los archivos de configuración no tendrá mucho efecto si puede modificar la base de datos. Solo asegúrate de que todo esté tan seguro como sea posible y probablemente estés bien.


Si la máquina realmente se está administrando de la manera tradicional de Unix, donde J. usuario aleatorio no está desatendiendo para rootear todo el tiempo, diría que los permisos del sistema de archivos son su mejor opción. Si alguien obtiene acceso raíz no autorizado, ninguna cantidad de locura de encriptación va a "asegurar" la cadena de conexión.

Marcaría los archivos con la cadena de conexión como propiedad del "usuario de script" y les daría acceso como usted describe.

(Bravo por darse cuenta de que encriptar la cadena de conexión no le compra nada, en este ejemplo. La seguridad a través de la oscuridad es contraproducente).