PHP con MYSQL

Iniciado por Wexex5, 3 Noviembre 2021, 11:30 AM

0 Miembros y 1 Visitante están viendo este tema.

Wexex5

Muy buenas a todos, estoy trabajando en una tienda online, y estoy en la parte de programar php con mysql pero he estado mirando que se suele poner datos sensible en el codigo de php para obtener datos de mysql.

Sinceranmente no me parece bien hacer esto para nada, escribir datos sensibles en un fichero(a fin de cuentas), es el error mas grande que uno puede tener...

Las funciones de php para mysql pienso igual, otro error mas por las inyecciones de codigos en sus funciones...

Como se supone que se conecta php con mysql, sin escribir datos sensible?

el-brujo

¿Datos sensibles a que te refieres? ¿A los credenciales de acceso de MySQL?

Es lo habitual, WordPress, Drupal, vBulletin, etc pues el fichero de configuración php incluye los datos de acceso, usuario y contraseña para acceder a la BD MySQL

Es un fichero configuración php que no se puede leer, sólo se escriben los datos para poderse conectar y ya. Sería peor al revés, sin ninguna autenticación.

Para más seguridad MySQL (MariaDB) se puede configurar para dar acceso sólo localmente (sin acceso remoto) y sólo a una determinada BD (y a sus respectivas tablas)

Opciones de Seguridad fichero my.cnf

Citar
    #security
    local-infile=0
    # para poner mysql remoto comentar (mysql sólo en local)
    skip-networking
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    #no dns lookups
    skip-name-resolve

Wexex5

Entiendo que sea lo habitual, pero escribir un usuario y una contraseña en un codigo, mmmm..... sigo sin verlo bien...

Con javascript se puede inyectar codigos que interfirieran en sus variables y funciones y podria llegar a las funciones o variables de php que pueda comprometan el sistema.

Si tengo un directorio que almacena comentarios de todo los clientes, un hacker podria literalmente escribir datos en las variables de javascript o ejecutar funciones.

Con php si modifica ciertas identificaciones en los botones de html podrias ejecutar funciones que hay en el codigo php!!!

Por dios es un error escribir cualquier dato sensible en un fichero...

Es por lo que lo veo mal y derivaciones a este tipo de metodos.

Obviamente no existe la maxima seguridad, pero al menos hay que hacer que el hacker muera de viejo antes de que lo consiga.

MinusFour

Cita de: Wexex5 en  3 Noviembre 2021, 12:12 PM
Con javascript se puede inyectar codigos que interfirieran en sus variables y funciones y podria llegar a las funciones o variables de php que pueda comprometan el sistema.

Claro, pero por eso tienes que programar teniendo en cuenta la seguridad del sistema.

Cita de: Wexex5 en  3 Noviembre 2021, 12:12 PM
Si tengo un directorio que almacena comentarios de todo los clientes, un hacker podria literalmente escribir datos en las variables de javascript o ejecutar funciones.

Si tu seguridad se basa en javascript pues sí. Pero javascript no es el lugar para hacer este tipo de verificaciones. Sobre todo para este tipo de cosas.

Cita de: Wexex5 en  3 Noviembre 2021, 12:12 PM
Con php si modifica ciertas identificaciones en los botones de html podrias ejecutar funciones que hay en el codigo php!!!

Eh... no. Desde el HTML a lo más que puedes hacer es cambiar la URL a la que se envía la petición. De ahí se corre un script en PHP. HTML ni javascript tiene acceso directo al código de PHP.

Cita de: Wexex5 en  3 Noviembre 2021, 12:12 PM
Por dios es un error escribir cualquier dato sensible en un fichero...

En cierta parte es cierto, por eso existen otros sistemas de autentificación para los diversos sistemas que puedes tener que no usan usuario y contraseña (no solo de bases de datos, sino también de otros servicios). Pero de que las credenciales tienen que estar guardadas en algún lado pues no hay otra manera... A menos que quieras estar introduciendo las credenciales manualmente en algún proceso cada que reinicias el sistema (y luego tener que programar el acceso a este proceso).

Cita de: Wexex5 en  3 Noviembre 2021, 12:12 PM

Es por lo que lo veo mal y derivaciones a este tipo de metodos.

Obviamente no existe la maxima seguridad, pero al menos hay que hacer que el hacker muera de viejo antes de que lo consiga.

En este caso, lo peor que puede pasar es que tu reusas las credenciales para otro sistema. Por ejemplo, era habitual que los servicios de hosting te daban una sola contraseña para la cuenta del hosting, la cuenta de FTP y la cuenta de MySQL. Así que si alguien alcanzaba a leer la contraseña pues ya tenía acceso a todo.

Pero si las credenciales solo aplica a tu sistema de base de datos entonces realmente no puedes hacer nada más que conectarte a este sistema. Y los sistemas de bases de datos generalmente no están expuestos más que al sistema que necesite accederlo. Es decir, que el atacante necesitaría todavía tener acceso al servidor para poder acceder a la base de datos.

#!drvy

#4
Todos los lenguajes server-side funcionan así. De una manera o de otra debes exponer las credenciales para que se puedan usar. En despliegues lo normal hoy en dia es usar variables de entorno, pero igualmente si alguien consigue acceso al servidor va a poder listar tanto los archivos como las variables de entorno.... viene siendo lo mismo.


CitarPor dios es un error escribir cualquier dato sensible en un fichero...

¿Y como pretendes suministrarlos? Me da a mi que has tocado pocos lenguajes server-side.


Saludos

Wexex5

Bien estoy de acuerdo...

Alguna duda que tengo...

Y mejor te hablo en privado...

Wexex5

#6
Cita de: #!drvy en  3 Noviembre 2021, 13:26 PM
Todos los lenguajes server-side funcionan así. De una manera o de otra debes exponer las credenciales para que se puedan usar. En despliegues lo normal hoy en dia es usar variables de entorno, pero igualmente si alguien consigue acceso al servidor va a poder listar tanto los archivos como las variables de entorno.... viene siendo lo mismo.


¿Y como pretendes suministrarlos? Me da a mi que has tocado pocos lenguajes server-side.


Saludos

Pues si soy mas de sistemas y algoritmos.

Y jamas de los jamases no he escrito una contraseña en mis algoritmos. siempre me he negado.

Suelo preferir generar identificaciones a las variables y al propio dato(id unico temporal para el usuario y sus acciones, y datos), constantemente modificas la estructura del codigo, todo el tiempo... siempre hay una id unica para el usuario y sus acciones, asi nadie puede saber que tu eres tu.

Es como casi una autenticación por token, coincide? funciona!, no coincide? no funciona...

#!drvy

#7
CitarY jamas de los jamases no he escrito una contraseña en mis algoritmos. siempre me he negado.

Las contraseñas no se escriben en algoritmos como tal. Se guardan en ficheros (que nunca deben ser versionados) o en variables de entorno que luego son leídos/as por un algoritmo.

Seas desarrollador o seas de sistemas, es imposible que no te toque un caso en el que tengas que suministrar un usuario y contraseña/token para conectarte a una base de datos, y en el momento en el que lo haces, lo estás exponiendo. Precisamente para eso existen los permisos, minimizar y mitigar el daño de una eventual fuga de datos.

Saludos