Contraseña de la base de datos Mysql y contraseña del formulario web

1

Tengo una base de datos Mysql donde una tabla está destinada a almacenar las quejas / comentarios / sugerencias de los usuarios. Estoy usando Mysqli para conectarme a la base de datos con un

    $con=mysqli_connect("myhost","myuser","mypassword","mydb");

En este momento, "myuser" y "mypassword" son los mismos que el ID y la contraseña que utilizo como administrador para iniciar sesión en el backend de phpmyadmin. ¿Es esta la manera correcta de hacer esto? ¿Esto le da más poder al usuario del que quiero? ¿Implica que los usuarios podrán ejecutar las sentencias DELETE y ALter en la tabla / base de datos?

Mi preocupación es que, dado que el ID y la contraseña son del administrador, los usuarios que envían los comentarios también podrían usarlo para hacer algo que pueda dañar la base de datos. ¿Es necesario usar el ID de administrador y la contraseña en este código?

Mi alojamiento compartido no me permite crear usuarios adicionales, al menos eso es lo que entendí de mi chat con su atención al cliente (dicen que necesito un plan de servidor dedicado para poder agregar más usuarios. I no tiene el presupuesto para asumir el costo adicional del servidor virtual dedicado). No hay una tabla de Usuarios o una tabla de Privilegios de Usuario en la instalación. ¿Esto significa que no puedo crear mis propias tablas para administrar usuarios y asignar privilegios? ¿Alguna de las tablas que creo funcionaría exactamente como las que vienen con la instalación? ¿Existe alguna restricción para los nombres de las tablas, es decir, que las tablas que me gustaría crear no pueden tener ciertos nombres?

    
pregunta vinaya 13.07.2013 - 09:18
fuente

2 respuestas

2

No es la forma más segura de hacer esto. Una forma más segura, como usted afirma, sería tener un usuario sin privilegios.

Es improbable que puedas hacerlo a mano; cualquier tabla de "Usuario" que haya creado probablemente sea solo eso, una tabla, sin ningún efecto en los usuarios de la base de datos real. Supongo que su usuario "administrador" es en realidad un usuario normal con privilegios completos en su propia base de datos , que no puede, por ejemplo, emitir GRANT ALL PRIVILEGES ON yourdb.* TO newuser@host IDENTIFIED BY 'password'; sin obtener un ERROR 1044 (42000): Access denied for user... ,

Tal como está, debe implementar la seguridad en el nivel de la aplicación en lugar de en el nivel de la base de datos. Sin embargo, la interfaz de MySQLi es bastante sólida (a menos que te dispares a ti mismo) y no es demasiado difícil evitar posibles inyecciones de SQL.

Salvo que, los usuarios tendrán privilegios de administrador, pero no podrán utilizarlos.

    
respondido por el LSerni 13.07.2013 - 10:01
fuente
1

si usted (o su proveedor de servicios) no puede crear un usuario adicional que tenga derecho de selección solo para la base de datos completa y el derecho de escritura solo para las tablas dadas, entonces

  

¿Es esta la manera correcta de hacer esto?

esta es la única manera para ti.

la forma correcta sería:

GRANT ALL  ON yourdb.* TO adminuser@host IDENTIFIED BY 'password';
GRANT SELECT  ON yourdb.* TO webuser@host IDENTIFIED BY 'password2';
GRANT INSERT  ON yourdb.complaints TO webuser@host IDENTIFIED BY 'password2';
...

vea: GRANT Syntax

    
respondido por el that guy from over there 13.07.2013 - 10:20
fuente

Lea otras preguntas en las etiquetas