Django
12. Template 주석, HTML 이스케이프
테니드2
2021. 4. 8. 15:03
템플릿 주석을 작성하는 방법은 2가지 방법이 있다.
1번째는 한줄 주석 2번째는 여러줄 주석
- 한줄 주석
{# Hello #}world
{# {% if foo %}bar {% else %} #}
- 여러줄 주석
{% comment "note" %}
<p>Commented out text here</p>
{% endcomment %}
- HTML 이스케이프
템플릿 코드를 렌더링하여 HTML 텍스트를 만들 때, 템플릿 변수에 HTML 태그가 들어 있는 경우에 그대로 렌더링하면 원하는 결과가 나오지 않을 수 있다. 그리고 이점을 이용하여 XSS 공격이 이루어진다.
장고는 자동 이스케이프 기능을 제공하고 있다.
- < -> <
- > -> >
- ' (single quote) -> '
- " (double quote) -> "
- & -> &
그렇기 때문에 자동 이스케이프 기능을 비활성화 할 수 있는 2가지 방법이 있다.
- safe 필더를 이용
This will not be escaped: {{ data|safe }}
safe 필터는 템플릿 변수에만 영향을 미친다.
- {% autoescape %} 태그를 이용
{% autoescape off %}
Hello {{ name }}
{% endautoescape %}
autoescape 태그 영역안에서는 자동 이스케이프 기능을 비활성화 한다.
추가적으로 필터의 인자에 사용되는 스프링 리터럴에는 자동 이스케이프 기능이 적용되지 않는다.
출처: 한빛미디어, Django로 배우는 쉽고 빠른 웹 개발 파이썬 웹 프로그래밍