Tu pregunta es muy confusa. Asumiré que el inglés no es su primer idioma y lo que realmente pregunta es "¿se debe exponer un DBMS en Internet?"
él no quiere la contraseña de la base de datos en el código
Eso es solo el comienzo de tus problemas.
Hay cosas que puede hacer para hacer que el problema sea menos grave de lo que está proponiendo actualmente, pero aún así dejan mucho que desear.
Utilice las credenciales proporcionadas por el usuario para autenticarse en el DBMS
es decir, la contraseña de la base de datos es la contraseña del usuario. Esto restringe el uso de la base de datos a usuarios conocidos (en lugar de hacerlo disponible para cualquier persona en Internet) y elimina la necesidad de incrustar la contraseña de la base de datos en el cliente. Pero no resuelve ninguno de los otros problemas.
restringe el acceso a las cuentas para ejecutar solo procedimientos almacenados
Hecho correctamente, esto evitaría que un atacante lea cosas de la base de datos a la que no debería tener acceso, por ejemplo. solo deben poder ver sus pedidos y no los pedidos de otras personas. También le permite implementar su lógica de negocios en el lado del servidor (no puede confiar en la lógica implementada en el cliente). Nunca debe almacenar datos que no hayan sido examinados para su cumplimiento. Esto también ofrece cierto margen para administrar la experiencia del usuario de manera más eficaz cuando las cosas no avanzan por el camino feliz. Sin embargo, es realmente difícil implementar la lógica de la aplicación en el SQL de procedimiento.
restringe el acceso a direcciones IP específicas
Cuando solo las direcciones IP conocidas accederán a un servicio, esta es una buena práctica: reduce el ruido, pero no es infalible. Y su mención de una aplicación IOS (supongo que se refiere a iOS, el sistema operativo de dispositivo móvil de Apple, no IOS, que es el sistema operativo de dispositivo de red de Cisco) sugiere que no podrá determinar la dirección del cliente por adelantado.
... ¡¡¡pero esto no es suficiente protección !!!
Los DBMS simplemente no están diseñados para exponerse en un entorno potencialmente hostil. Y el SQL, que utiliza el mismo canal para datos y control, es particularmente susceptible de abuso. Nadie ha podido solucionar estos problemas en un DBMS, y de hecho, ya nadie lo está intentando, ya que la solución es implementar una capa de control adecuada, al lado del servidor, encima del DBMS.