Jinja autoescape 비활성화
Jinja auto-escape is disabled
설명
Jinja 템플릿 엔진에서 자동 이스케이프가 비활성화되어 있으면, 사용자 입력값이 HTML로 출력될 때 적절히 인코딩되지 않아 XSS(크로스 사이트 스크립팅) 공격에 취약해질 수 있습니다. 자동 이스케이프는 HTML 콘텐츠에서 사용자 입력값을 안전하게 처리하기 위해 필수적입니다.
잠재적 영향
XSS (크로스 사이트 스크립팅): 공격자가 악성 스크립트를 삽입하여 다른 사용자의 브라우저에서 실행될 수 있습니다. 이를 악용한 계정 탈취가 발생할수도 있습니다.
피싱 공격: 사용자에게 악성 링크나 가짜 로그인 페이지를 제공하여 정보를 탈취할 수 있습니다.
데이터 탈취: 공격자가 사용자의 민감한 데이터를 탈취할 수 있습니다.
해결 방법
자동 이스케이프 활성화: Jinja 템플릿 엔진의
autoescape옵션을 활성화합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
# Unsafe Jinja2 code
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('template.html')
html_content = template.render(user_input=user_input)안전한 코드
설명:
취약한 코드: 자동 이스케이프가 비활성화된 상태에서 사용자 입력값을 HTML에 출력하여, 악성 스크립트가 실행될 수 있습니다.
안전한 코드:
autoescape옵션을 활성화하여, HTML 콘텐츠에서 사용자 입력값이 안전하게 처리되도록 합니다.select_autoescape을 사용하여 원하는 파일 확장자 대상으로 적용할 수 있습니다.
참조
OWASP: Cross-site Scripting (XSS)
Last updated