miércoles, 21 de noviembre de 2012

Sacar configuración importante de settings.py en Django

Es posible que necesitemos sacar cierta información de carácter sensible del fichero settings.py de un proyecto, bien por facilitar el trabajo con control de versiones, o por querer tener diferentes configuraciones entre entornos.

Una manera sencilla de hacer esto es como se explica en https://code.djangoproject.com/wiki/SplitSettings.


Por ejemplo, imaginemos que queremos sacar la información de bbdd. Para ello nos vamos a crear un fichero settings.ini en /etc, cuyo contenido será este:

[database]
DATABASE_NAME: nombre_bbdd
DATABASE_USER: usuario
DATABASE_PASSWORD: pass
DATABASE_HOST: localhost
DATABASE_PORT: 3306


Luego tan sólo tendremos que modificar nuestro settings.py añadiendo esto:

from ConfigParser import RawConfigParser

config = RawConfigParser()
config.read('/etc/settings.ini')




Y en la sección DATABASES configuraremos lo siguiente:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'config.get('database', 'DATABASE_NAME')',                     
        'USER': config.get('database', 'DATABASE_USER'),                     
        'PASSWORD': config.get('database', 'DATABASE_PASSWORD'),                 
        'HOST': config.get('database', 'DATABASE_HOST'),                     
        'PORT': config.get('database', 'DATABASE_PORT'),                    
    }
}


Y listo, ya tendremos nuestro settings.py configurado para poder ser distribuido sin tener que estar pendiente de modificar ningún dato sensible.

No hay comentarios:

Publicar un comentario

Obtener informacion de repositorios a través de los metadatos .git publicados por error

 A raiz de CTF realizado recientemente, me ha parecido interesante publicar este post sobre los errores de seguridad que se encuentran en mu...