render_template("vuln.html")가 vuln.html 내부의 JS 문을 동작하지 못하도록 막는 용도인가요?

XSS-2에서는 XSS-1과 달리 <script> 명령어를 사용하니 동작하지 않았습니다. 그래서 저는 render_template의 영향으로 JS 명령어 전체가 동작하지 않는 줄 알았으나 document.cookie는 정상 작동했습니다. 저는 document.cookie가 JS의 명령어인 줄 알았는데, 혹시 제가 기존에 알고 있던 것에 오류가 있나요? 아니면 render_template가 JS 명령어 전체를 vuln.html에서 동작하지 못하도록 하는 것이 아닌가요?

#web
작성자 정보
답변 1
avatar
Little Stranger
대표 업적 없음
# xss-1 / app.py
@app.route("/vuln")
def vuln():
    param = request.args.get("param", "")
    return param

xss-1의 경우에는 템플릿으로 반환에서 script 태그가 작동하지만

# xss-2 / vuln.html
{% block content %}
    <div id='vuln'></div>
    <script>var x=new URLSearchParams(location.search); document.getElementById('vuln').innerHTML = x.get('param');</script>
{% endblock %}

xss-2에서는 html 자체에서 url에서 입력값을 받아와 innerHTML을 해줍니다. innerHTML에서는 script태그가 작동하지 않는것이 정상입니다.

refer : innerHTML docs

2023.07.24. 12:01
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기