[점프 투 장고] 마크다운 허용 시 xss

안녕하세요
점프 투 장고 따라하면서 열심히 파이보 게시판을 만들고 있습니다.
그런데 장고 기본설정에선 xss을 자동적으로 막아주는 것 같은데
마크다운을 추가하니 이런 xss 공격이 실행됩니다ㅠㅠ (console log 찍히는중)

에디터 기능도 넣으면서 xss도 안되게 할 방법이 없을까요..

highslow1536 546

M 2023년 8월 21일 6:36 오후

목록으로
2개의 답변이 있습니다. 1 / 1 Page

pybo_filter.py를 다음과 같이 수정해 보세요.

import markdown
from django import template
from django.utils.safestring import mark_safe

register = template.Library()


@register.filter
def sub(value, arg):
    return value - arg


@register.filter
def mark(value):
    extensions = ["nl2br", "fenced_code"]
    return mark_safe(markdown.markdown(value, extensions=extensions, safe_mode='replace'))

safe_mode='replace' 를 추가해 보세요. (테스트는 해보지 못했습니다.)

또는 다음과 같이 strip_tags를 사용할수도 있을것 같네요.

{{ content|mark|strip_tags }}

박응용

2023년 8월 21일 10:37 오후

댓글 감사합니다 선생님! 이리저리 테스트해본 결과, 아래 3가지의 방법을 알아냈습니다. 1. escape 필터 사용 (단점: 마크다운 인용 문법 동작x, 링크에 js 넣으면 공격 가능) {{ content|escape|mark }} 2. striptags 필터 사용 (단점: 링크 공격 가능) {{ content|striptags|mark }} 3. django-markup 라이브러리 활용 (단점: 사용법 상대적으로 복잡) - highslow1536님, M 2023년 8월 28일 2:31 오후 추천 , 대댓글

네이버 링크

꼭 스크립트 실행뿐만이 아니라 이런 html 태그들을 마음대로 못쓰게 하고 싶습니다...!

highslow1536

M 2023년 8월 21일 6:25 오후

+1 가장 간단하게는 클라우드플래어를 사용하는 방법도 있습니다. (하지만 추천하고 싶은 방법은 아닙니다. 세세한 설정이 필요하기도 하고 또 프로버전을 사용해야 그런 세세한 설정도 가능하니까요..) - 박응용님, M 2023년 8월 21일 10:20 오후 추천 , 대댓글