Habrá mucha información confidencial en nuestro proyecto Django que residirá en settings.py, o variables locales que contienen información confidencial o la solicitud POST realizada mediante formularios. Entonces, al implementar un proyecto Django, siempre debemos asegurarnos de que estén protegidos, especialmente los repositorios que están disponibles públicamente. Cuando un proyecto se implementa sin manejar todos los casos de prueba posibles y con DEBUG=True, hace que el trabajo de encontrar lagunas sea pan comido para los piratas informáticos. Por lo tanto, los datos del usuario pueden quedar expuestos al descuidar la importancia de proteger la información confidencial en el archivo settings.py. Hay muchos casos en los que puede ocurrir un problema al exponer información sensible principalmente en los repositorios públicos.
Manejo del archivo settings.py
Para proteger la información confidencial del archivo settings.py, usaremos la biblioteca de desacoplamiento de Python. Esta biblioteca ayuda a separar el parámetro de configuración del código fuente. Los parámetros relacionados con el proyecto van al código fuente y los parámetros relacionados con la instancia del proyecto van al archivo de entorno.
Instalación
Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install python-decouple
Implementación paso a paso
- Cree un archivo .env para almacenar los datos confidenciales cerca del archivo manage.py como se muestra a continuación.
Después de crear el archivo .env, se ve así:
- Ahora copiaremos la información confidencial , como la clave secreta, la depuración, el usuario de la base de datos, el nombre de la base de datos, la contraseña de la base de datos, los valores del host de la base de datos del archivo settings.py y la pegaremos en el archivo .env creado como:
- Ahora vaya al archivo settings.py y agregue esta línea para importar el desacoplamiento instalado previamente.
Python3
from decouple import config
- Reemplace la clave secreta en el archivo settings.py con config y dentro de config ingrese la variable con la que guardó la clave secreta en el archivo .env como:
Python3
SECRET_KEY = config('SECRET_KEY')
- Del mismo modo, reemplace el valor de depuración como:
Python3
DEBUG = config('DEBUG')
- De manera similar, reemplace DB_USER, DB_NAME, DB_PASSWORD, DB_HOST.
- Ahora guarda todos los archivos.
- Luego cree un archivo .gitignore al lado del archivo .env como se muestra a continuación.
- Luego ingrese .env dentro del archivo .gitignore, guarde y cierre el archivo.
- Ahora puede agregar estos archivos a git y enviarlos de forma segura.
Manejo de variables sensibles
Variables confidenciales significa las variables que contienen información como contraseña, nombre de usuario, etc. Para evitar que esta información se muestre en el informe de error, podemos usar el decorador de variables sensibles del módulo django.views.decorators.debug.
Ejemplo:
Python3
from django.views.decorators.debug import sensitive_variables @sensitive_variables('password', 'acc', 'name') def fun(): password = user.password acc = user.account_no name = user.name
También podemos ocultar todas las variables locales para evitar que se muestren en el informe de errores al no proporcionar ningún argumento al decorador de variables_sensibles.
Ejemplo:
Python3
from django.views.decorators.debug import sensitive_variables @sensitive_variables() def fun(): password = user.password acc = user.account_no name = user.name
Manejo de parámetros POST
Supongamos que una de las requests POST contiene información confidencial como contraseña, número de cuenta, número de tarjeta de crédito, etc. También querremos evitar que esta información se muestre en el informe de error. Django proporciona un decorador de parámetros de publicación sensitivos para manejar esto desde el módulo django.views.decorators.debug.
Ejemplo:
Python3
from django.views.decorators.debug import sensitive_post_parameters @sensitive_post_parameters('name', 'password', 'acc') def fun(request): name = request.POST['name'] password = request.POST['password'] acc = request.POST['account_no']
También podemos ocultar todos los parámetros de la publicación al no proporcionar ningún argumento al decorador de los parámetros de publicación sensibles.
Ejemplo:
Python3
from django.views.decorators.debug import sensitive_post_parameters @sensitive_post_parameters() def fun(request): name = request.POST['name'] password = request.POST['password'] acc = request.POST['account_no']
Publicación traducida automáticamente
Artículo escrito por rupasriachanta421 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA