Flask Academy · Lección

Escape automático y el filtro safe

Manténgase protegido frente a XSS y desactive el escape solo cuando esté seguro.

Lección 4 de 413 pasos

Escape automático y el filtro safe es una lección gratuita de Flask Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Flask Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Flask Academy incluye 4 lecciones en total.

El peligro del HTML sin procesar

Si imprime directamente en una página el texto de un usuario, una entrada maliciosa podría inyectar scripts. Este ataque se llama XSS y Flask ofrece protección contra él.

El autoescape está activado

De forma predeterminada, Jinja2 activa el autoescape para las plantillas HTML. Los caracteres peligrosos se neutralizan antes de llegar al navegador.

Qué hace el escape

El escape convierte caracteres como el signo menor que en entidades seguras. Así, el navegador los muestra como texto y nunca como marcado activo.

<b>hi</b>  becomes  &lt;b&gt;hi&lt;/b&gt;

Por qué el texto sigue siendo texto

Como las etiquetas se escapan, un comentario como una etiqueta falsa de negrita aparece como texto plano. La página lo muestra literalmente en lugar de ejecutarlo.

Cuando confía en el HTML

A veces realmente quiere que se procese HTML, por ejemplo, un valor que ha creado usted mismo. Para eso puede desactivar el escape con el filtro safe.

{{ trusted_html|safe }}

Cómo funciona safe

El filtro safe indica a Jinja2 que el valor ya es confiable, por lo que no debe escaparlo. Entonces el marcado se procesa como HTML real.

Solo con datos confiables

Use safe únicamente con contenido que usted controle. Marcar como seguro el contenido introducido por un usuario vuelve a abrir la vulnerabilidad XSS que el autoescape estaba cerrando.

Marcar como seguro en Python

También puede marcar HTML confiable en su vista usando Markup. Una cadena Markup omite automáticamente el escape al procesarse.

from markupsafe import Markup
snippet = Markup('<b>Hi</b>')

Desactivar el escape localmente

Para omitir el escape en toda una región, envuélvala en un bloque autoescape establecido en false. Úselo rara vez y con mucho cuidado.

{% autoescape false %}{{ html }}{% endautoescape %}

El filtro escape

También puede forzar el escape con el filtro escape o con su alias corto e. Resulta útil cuando el autoescape está desactivado para un bloque.

{{ value|e }}

Seguro de forma predeterminada

La idea principal es que Flask es seguro desde el primer momento. Solo debe relajar el escape de forma deliberada, nunca por accidente, para mantener protegidos a los usuarios.

Comprobación rápida

Imprime una entrada no confiable de un usuario en una plantilla. ¿Qué hace el autoescape con las etiquetas HTML que contiene?

Resumen

Ha aprendido que Flask aplica autoescape a la salida para bloquear XSS y que el filtro safe solo lo desactiva para HTML en el que confía plenamente. ¡Mantenga la seguridad! 🔒

Gratis para empezar

Aprende Python con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Escape automático y el filtro safe» es gratis?

Sí — el texto completo de «Escape automático y el filtro safe» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Flask Academy, actualiza a CoddyKit PRO. El curso de Flask Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Escape automático y el filtro safe»?

Manténgase protegido frente a XSS y desactive el escape solo cuando esté seguro. Practicas Flask Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Flask Academy?

No se requiere experiencia previa. Flask Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Escape automático y el filtro safe»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Flask Academy?

Sí. Cada lección de Flask Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. render_template y la carpeta templates
  2. Pase datos a una plantilla
  3. Bucles y condicionales de Jinja2
  4. Escape automático y el filtro safe
← Volver a Flask Academy