jinja

[template] Jinja - 템플릿 - HTML 회피 (Template - HTML Escaping) ※ e필터 = 이필터

목차
  1. 수동 회피처리 (Manual Escaping)
  2. 자동 회피처리 (Automatic Escaping)

 

템플릿에서 HTML을 생성할 때는 변수가 결과 HTML에 영향을 주는 문자를 포함할 수 있다는 위험이 항상 있음. 두 가지 접근 방법이 있음:

  • 각 변수를 수동으로 회피처리.
  • 기본적으로 모든 것을 자동으로 회피처리.


Jinja는 두 가지 모두를 지원함. 사용되는 것은 애플리케이션 설정에 따라 달라짐. 기본구성은 자동 회피처리 없음. (아래 여러 이유 때문에.)

  • 안전한 값 이외의 모든 것을 회피처리 시, Jinja가 HTML을 포함하지 않는 변수(예: 숫자, 부울)도 회피처리해 성능에 큰 영향 미칠 수 있음.
  • 변수의 안전성에 대한 정보는 매우 취약함. 안전한 값과 안전하지 않은 값을 강제 형변환하면 반환 값이 이중으로 회피처리 된 HTML이 될 수 있음.

 

수동 회피처리 (Manual Escaping)

 

  • 수동 이스케이핑 활성화 시, 변수 회피처리 하는 것은 사용자 몫임.
  • (>, <, &, ") 문자 중 하나라도 포함된 변수 존재 시, 해당 변수가 올바른 형식의 신뢰 가능한 HTML을 포함 안 하면 반드시 해당 변수를 회피처리 해야 함.
  • 변수를 수동 회피처리 하려면, 해당 변수 뒤에 |e 필터 추가. (예)  {{ user.username|e }}

 

 

자동 회피처리 (Automatic Escaping)

 

1.

자동 회피처리 활성화 된 경우, 모든 것이 기본적으로 이스케이핑되지만 명시적으로 안전한 것으로 표시된 값은 예외임. 변수와 표현식은 다음 중 하나에서 안전한 것으로 표시할 수 있음:

  • 애플리케이션에서 markupsafe.Markup 사용해 컨텍스트 사전에 표시.
  • 템플릿에서 |safe 필터를 사용.

 

2.

safe 표시된 문자열이 해당 표시를 이해 못하는 다른 Python 코드 통과 시 그 표시가 사라질 수 있음. 데이터가 언제 안전하게 표시되었는지와 템플릿에 도달하기 전에 어떻게 처리되었는지 확인 필요함.

 

3.

변수가 회피처리 되었으나 safe로 표시 안 되면 자동 회피처리가 여전히 진행되어 이중 회피처리 된 문자가 발생함. 이미 안전한 데이터이나 safe 표시 안 된 경우, 반드시 Markup으로 래핑하거나 |safe 필터를 사용해야 함.

 

4.

Jinja 함수(macros, super, self.BLOCKNAME)들은 항상 safe 표시된 템플릿 데이터를 반환함.

 

5.

자동 회피처리 있는 템플릿의 문자열 리터럴은 unsafe로 간주됨. (왜냐하면 고유 Python 문자열이 safe 하지 않기 때문임.) 

 

공식 매뉴얼: https://jinja.palletsprojects.com/en/3.1.x/templates/#working-with-automatic-escaping

방문 감사합니다. (즐겨찾기 등록: Ctrl + D)

분류 제목
intro Jinja - 소개 - 설치
api Jinja - API - 기초
api Jinja - API - 고급 API
api Jinja - API - 자동 이스케이프
api Jinja - API - 식별자에 관한 참고 사항
api Jinja - API - 정의되지 않은 유형
api Jinja - API - 문맥
api Jinja - API - 로더
api Jinja - API - 바이트코드 캐시
api Jinja - API - 비동기 지원
api Jinja - API - 정책
api Jinja - API - 유용
api Jinja - API - 예외
api Jinja - API - 맞춤 필터
1/11
목록
  • 채팅방
  • 필독
1. 채팅창 헤드에서 접속자 확인 2. 닉네임 클릭해 1:1 채팅 가능 3. 닉네임 클릭해 귓속말 가능 4. 닉네임 클릭해 호출하기 가능 5. 우하단 클릭해 환경 설정 가능 6. 의뢰글 작성 후 의뢰 상담 가능 7. 질문글 작성 후 질문 상담 가능 8. 채팅방에 개인정보 입력 금지 9. 채팅방에 광고 욕설 비방 금지
 홈  PC버전 로그인 일본어
웹디자인언어
서버관리언어
고급코딩언어
그누보드 1
제작의뢰
Q&A
커뮤니티 1
웹유틸
회원센터
홈짱닷컴 PC버전 로그인