La forma estándar es colocar las credenciales en un archivo de configuración e intentar proteger el archivo de configuración para que no sea más legible que el archivo perl. Esto ofrece un aumento moderado en la seguridad; por ejemplo, el código puede estar en el control de origen y accesible para los desarrolladores, el archivo de configuración no lo estaría. El código debe estar en la raíz cgi del servidor web y, posiblemente, descargarse bajo ciertas configuraciones erróneas, y el archivo de configuración no tiene que estar.
La forma ambiciosa es cifrar de forma reversible las credenciales y colocarlas en un archivo de configuración. Por supuesto, cualquier cosa encriptada reversiblemente puede ser descifrada. La aplicación BladeLogic hizo esto, y fue trivial (< 1 día) para descompilar su Java lo suficiente como para descubrir la función de desencriptar credenciales y usarla para desencriptarlas a mi entera satisfacción. No es una marca contra ellos; ese es solo el nombre del juego cifrado reversiblemente.
Otra opción es usar la autorización basada en el sistema operativo en concierto con restricciones de base de datos estrictamente limitadas. Por ejemplo, limite el acceso del usuario del cliente de la base de datos a un conjunto de procedimientos almacenados para limitar el potencial de abuso y permita que el usuario acceda a la base de datos sin una contraseña. Esto no funciona si está haciendo cliente-servidor a través de la red, lo que limita la frecuencia con la que es útil. Además, las personas tienden a mirar más de reojo el acceso del usuario del sistema operativo "sin contraseña" que el hecho de escribir la contraseña de una manera u otra. No es completamente lógico, pero hay estándares que dicen que todos los usuarios de bases de datos deben tener contraseñas, y eso es todo.