Estoy imaginando un sitio web donde el usuario se registra, tiene su propia base de datos ejecutándose en algún lugar, y luego proporciona credenciales al sitio web para que el sitio web pueda acceder a esa base de datos. Por ejemplo, si yo fuera el usuario, podría estar ejecutando MySQL en un plan de alojamiento compartido en algún lugar. Quiero unirme a este sitio web y autorizar a este sitio web para consultar mi base de datos.
Estoy buscando consejos sobre los problemas de seguridad que debería considerar (como desarrollador del sitio web, pero también los problemas que el usuario final debería tener en cuenta).
Creo que asegurar el sitio web con https es obligatorio, pero entonces, ¿cómo deberían almacenarse las credenciales de la base de datos? ¿En texto plano en la propia base de datos de la página web? ¿Cómo debe hacer el sitio web una conexión a la base de datos del usuario? ¿Sería ODBC suficiente para la mayoría de DBMS? Si el sitio web estuviera codificado, digamos, PHP, ¿el uso de las funciones de conexión de base de datos nativas de PHP sería más seguro o mejor por cualquier otra razón? ¿Debería el usuario autorizar (dentro de su base de datos) la conexión como proveniente de la dirección IP específica del sitio web? etc.
Me doy cuenta de que esta no es una pregunta de programación simple con una respuesta en blanco y negro, pero espero que se me proporcione una lista de consideraciones que debería investigar, o quizás enlaces a artículos que traten estos temas.
Gracias de antemano.