¿Qué significa el parámetro ALLOWED_HOSTS en settings.py, y cómo funciona cuando DEBUG = False?

En Django, ALLOWED_HOSTS es una lista que define los nombres de dominio o direcciones IP que tienen permiso para acceder a tu aplicación. Este parámetro es crucial cuando DEBUG = False, ya que se usa para evitar solicitudes no autorizadas y proteger tu aplicación de ciertos ataques, como los de falsificación de solicitudes entre sitios (CSRF).

¿Por qué es importante ALLOWED_HOSTS?

Cuando desarrollas una aplicación con DEBUG = True, Django no verifica los nombres de dominio de las solicitudes entrantes, lo cual permite acceder fácilmente desde cualquier dirección. Sin embargo, al configurar tu aplicación para producción (DEBUG = False), ALLOWED_HOSTS se convierte en una medida de seguridad esencial. Es decir, Django solo responderá a solicitudes provenientes de los dominios o IPs que figuran en esta lista, rechazando las que provengan de orígenes no autorizados.

Cómo configurar ALLOWED_HOSTS

ALLOWED_HOSTS es una lista de strings en settings.py que incluye los nombres de dominio y/o direcciones IP permitidos. Por ejemplo:

ALLOWED_HOSTS = [
    'mi-sitio.com',        
    'www.mi-sitio.com',    
    '123.456.78.9',        
    'localhost',           
]
    

¿Qué ocurre si ALLOWED_HOSTS no está configurado correctamente?

Si ALLOWED_HOSTS está vacío o mal configurado en un entorno de producción (DEBUG = False), Django lanzará un error Bad Request (400) al intentar acceder al sitio, indicando que la solicitud no es válida. Este error se debe a que el host desde el cual se intenta acceder no está en la lista de hosts autorizados.

Consejos para configurar ALLOWED_HOSTS correctamente

  • Incluye todos los dominios y subdominios que usará la aplicación en producción.
  • No utilices '*' (comodín) en ALLOWED_HOSTS en producción, ya que permite el acceso desde cualquier origen, lo que puede ser un riesgo de seguridad.
  • Incluye 'localhost' si necesitas realizar pruebas locales.

Con una configuración adecuada de ALLOWED_HOSTS, puedes asegurarte de que tu aplicación Django esté protegida contra solicitudes no deseadas y accesible únicamente desde los dominios autorizados.

Comentarios

Entradas populares de este blog

Ejemplo para hacer una imagen circular en CSS

Ejemplo para añadir un contorno a un texto en CSS

Ejemplo para crear un tooltip con CSS