Protección de información confidencial al implementar el proyecto Django

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *