Автоэкранирование и фильтр safe
Защищайтесь от XSS и отключайте защиту только при полной уверенности.
«Автоэкранирование и фильтр safe» — бесплатный урок Flask Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Flask Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Flask Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
The Danger of Raw HTML
If you print user text straight into a page, a sneaky input could inject scripts. This attack is called XSS, and Flask defends against it.
Autoescaping Is On
By default Jinja2 turns on autoescaping for HTML templates. Dangerous characters get neutralized before they reach the browser.
What Escaping Does
Escaping converts characters like the less-than sign into safe entities. The browser then shows them as text, never as live markup.
<b>hi</b> becomes <b>hi</b>Why Text Stays Text
Because tags are escaped, a comment like a fake bold tag shows up as plain text. The page renders it literally instead of running it.
When You Trust the HTML
Sometimes you truly want HTML rendered, like a value you built yourself. For that you can opt out with the safe filter.
{{ trusted_html|safe }}How safe Works
The safe filter tells Jinja2 this value is already trusted, so do not escape it. The markup then renders as real HTML.
Only on Trusted Data
Use safe only on content you control. Marking user input safe reopens the very XSS hole autoescaping was closing.
Marking Safe in Python
You can also flag trusted HTML in your view with Markup. A Markup string skips escaping automatically when rendered.
from markupsafe import Markup
snippet = Markup('<b>Hi</b>')Disabling Escaping Locally
To skip escaping for a whole region, wrap it in an autoescape block set to false. Use this rarely and with great care.
{% autoescape false %}{{ html }}{% endautoescape %}The escape Filter
You can also force escaping with the escape filter, or its short alias e. It is handy when autoescaping is off for a block.
{{ value|e }}Safe by Default
The big idea: Flask is secure out of the box. You only relax escaping deliberately, never by accident, which keeps users protected.
Quick Check
You print untrusted user input in a template. What does autoescaping do with HTML tags in it?
Recap
You learned Flask autoescapes output to block XSS, and that the safe filter opts out only for HTML you fully trust. Stay secure! 🔒
Часто задаваемые вопросы
Урок «Автоэкранирование и фильтр safe» бесплатный?
Да — полный текст урока «Автоэкранирование и фильтр safe» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Flask Academy, подпишись на CoddyKit PRO. Курс Flask Academy содержит 4 уроков всего.
Чему я научусь в уроке «Автоэкранирование и фильтр safe»?
Защищайтесь от XSS и отключайте защиту только при полной уверенности. Ты практикуешь Flask Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Flask Academy?
Предыдущий опыт не требуется. Flask Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Автоэкранирование и фильтр safe»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Flask Academy?
Да. Каждый урок Flask Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- render_template и папка templates
- Передача данных в шаблон
- Циклы и условные конструкции Jinja2
- Автоэкранирование и фильтр safe