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을 사용하여 원하는 파일 확장자 대상으로 적용할 수 있습니다.

참조

Last updated